IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Comment stocker chaque ligne d'un fichier dans un tableau


Sujet :

C

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 89
    Points : 29
    Points
    29
    Par défaut Comment stocker chaque ligne d'un fichier dans un tableau
    Bonjour,

    Bon je suis sur un petit problème en C, et j'aimerais connaitre d'autres avis afin que je puisse m'en sortir !!!

    En fait ce que je souhaite faire c'est lire un fichier et stocker chaque ligne de ce fichier dans un tableau de chaîne de caractères ... En concret j'aimerais donc avoir un tableau de chaine de caractère: char **tabC et donc pour tabC[i][j] i représenterais chaque ligne du fichier et j chaque caractère de la ligne i !!!!!

    Si vous avez une proposition en c avec un beau fgets où quelque ce soit, n'hésitez pas, car je suis vraiment en lutte avec mon prog !!!!

    Thankssssssss en espérant avoir des réponses très rapidement

  2. #2
    Membre actif
    Profil pro
    Dev
    Inscrit en
    Décembre 2007
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dev

    Informations forums :
    Inscription : Décembre 2007
    Messages : 191
    Points : 216
    Points
    216
    Par défaut
    Si tu as deja fait des essais, donne-les, ici le style de la maison ce n'est pas de donner des solutions "toutes faites". Tu pourras recevoir de l'aide, mais montre quand même que tu passes plus de temps sur ton programme que les utilisateurs du forum qui te lisent .

    Meme un code erroné (et dis nous qu'est ce que tu en comprends pas dans tes erreurs). Tu as parlé de fgets, et bien pourquoi pas ? Qu'y a t-il de problématique avec ? As-tu lu la FAQ C à propos des fonctions pour lire des chaines de caractères / fichiers ? (lien en haut de la page).

    EDIT : est-ce que les lignes de ton fichiers ont le meme nombre de caractères ou pas ? Bien evidemment ce sera beaucoup plus simple si oui.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 89
    Points : 29
    Points
    29
    Par défaut
    Ok je vais mettre mon code, et en ce qui concerne ta question toutes les lignes du fichier n'ont pas la même longueur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    f=fopen(argv[1],"r");
     
    		k=0;
     
    		while(fgets (s2, 2000, f)!=NULL)
     
    		{
     
    			if(((s2[0] ==' ')||(s2[0]=='-')))
     
    			{
     
    				i=0;
     
    				while( (s2[i+1]!=' ') && (s2[i+2]!= '0'))
     
    				{
     
    					Conjonction[k][i] = s2[i];
     
    					//printf("%s",Conjonction[1]);
     
    					printf("%s",s2);
     
    					i++;
     
    				}
     
    				k++;
     
    			}
     
    		}
    Voilà mais je comprends pas pourquoi lors de l'execution j'ai un beau bus error, sachant que le tableau Conjonction est un tableau dynamique : char **Conjonction et qu'il est alloué juste avant, l'allocation est bonne.

    Le soucis apparemment c'est qu'à cause de la première boucle while tout le fichier est enregistré dans le tableau de caractère s2, donc faudrait changer ça mais je sais pas trop vers quoi m'orienter !!!

  4. #4
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    		k=0;
     		while(fgets (s2, 2000, f)!=NULL)
     		{
     			if(((s2[0] ==' ')||(s2[0]=='-')))
     			{
    ....
    				k++;
    			}
     		}
    k++ ne semble pas correctement placé. Si c'est le cas, un telle erreur est facilement évitée par une indentation correcte du code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while( (s2[i+1]!=' ') && (s2[i+2]!= '0')) ....
    est-ce '0' ou 0 ????
    Comment est détectée la fin de la ligne S2?
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  5. #5
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 89
    Points : 29
    Points
    29
    Par défaut
    bah dans mon cas la fin d'une ligne est marquée par le caractère 0 précédé d'un espace d'où le if.

    Quant au k++ il est correctement placé car l'indice k du tableau conjonction sera incrémenté à chaque fois qu'une ligne est traitée.

    Mais ce que je ne comprends vraiment pas c'est que lors de l'execution ça me sort un "bus error" et d'après plusieurs test c'est l'affection Conjonction[k][i] = s2[i]; qui ne lui plait pas.

    Mais pourquoi ? conjonction est définie comme étant un char **, et s2 comme un char *. Et k est initialisé avant ... COMPRENDS POOO !! j'suis sur que c'est un truc en bois encore ....

  6. #6
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par bartmanb Voir le message
    En fait ce que je souhaite faire c'est lire un fichier et stocker chaque ligne de ce fichier dans un tableau de chaîne de caractères ... En concret j'aimerais donc avoir un tableau de chaine de caractère: char **tabC et donc pour tabC[i][j] i représenterais chaque ligne du fichier et j chaque caractère de la ligne i !!!!!
    Le tableau dynamique est vide !
    Allouer quelques pointeurs (disons 8)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    nb_lin = 8;
    char *pp = malloc (sizeof *pp * nb_lin);
    lin = 0;
    allouer un bloc de, disons 32 colonnes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    nb_col = 32;
    pp[lin] = malloc(sizeof *pp[lin] * nb_col;
    lire la ligne courante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fgets(pp[lin], nb_col, fp);
    chercher et tuer le \n
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    char *p = strchr(pp[lin], '\n');
    if (p != NULL)
    {
       *p = 0;
        /* terminer (ligne suivante) */
        /* si on atteint le nombre de ligne, on agrandi (double, nombre d'or...) */
    }
    else
    {
        /* agrandir la ligne avec realloc() (double, nombre d'or...)*/
        /* recommencer */
    }
    Il n'y a plus qu'à mettre ça en forme. Sujet intéressant (quoique classique ).
    Pas de Wi-Fi à la maison : CPL

  7. #7
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 89
    Points : 29
    Points
    29
    Par défaut
    Pour faire un test pour voir si ça venait de mon allocation dynamique pour conjonction j'ai crée un tableau conjonction définie comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    // TEEEEEEEESSSSSSSSSTTTTTTTTTT
     
    		char conjonction[_conj_C][_conj_L];
     
    		for(i=0;i<_conj_C;i++)
     
    			for(j=0;i<_conj_L;j++)
     
    			{
     
     
     
    					conjonction[i][j] = 'a' ;
     
    					printf("a");
     
    			}
    Et le résultat de ça c'est que ça me fait les printf jusqu'à arriver à un Segmentation Fault ... Hmmm Aurai-je trouver le point névralgique ???

  8. #8
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par bartmanb Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    		char conjonction[_conj_C][_conj_L];
     
    		for(i=0;i<_conj_C;i++)
     
    			for(j=0;i<_conj_L;j++)
    Et le résultat de ça c'est que ça me fait les printf jusqu'à arriver à un Segmentation Fault ... Hmmm Aurai-je trouver le point névralgique ???
    Bah, tu as surtout fait une erreur de codage. Faut pas chercher des trucs compliqués avec des mots ronflants. Y'a un bug, c'est tout. :

    C'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    			for (j = 0; j < _conj_L; j++)
    le copié collé, c'est un art...

    Au fait, on a pas le droit d'utiliser des identificateurs qui commencent par _. Ils sont réservés à l'implémentation, précisément pour éviter toute confusion avec les identificateurs des utilisateurs... Si tu romps cette règle, le comportement est indéterminé.
    Pas de Wi-Fi à la maison : CPL

  9. #9
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 89
    Points : 29
    Points
    29
    Par défaut
    lool merci pour l'erreur alors mon test marche du coup mais le code suivant me crée toujours un Bus Error:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    // Allocation pour la création des conjonctions.
     
    		Conjonction = malloc(sizeof(*Conjonction) * conj_L);
     
    		for(i=0; i< conj_L; i++) 
     
    		{
     
    			Conjonction[i] = malloc(sizeof(**Conjonction) * conj_C);
     
    			Conjonction[i] = "";
     
    		}
     
    		// Fin de l'allocation
     
     
     
    		// Réouverture du fichier afin de construire chaque conjonction
     
    		f=fopen(argv[1],"r");
     
    		k=0;
     
    		while(fgets (s2, 2000, f)!=NULL)
     
    		{
     
    			if(((s2[0] ==' ')||(s2[0]=='-')))
     
    			{
     
    				i=0;
     
    				while( (s2[i+1]!=' ') && (s2[i+2]!= '0'))
     
    				{
     
    					Conjonction[k][i] = s2[i];
     
    					//printf("%s",Conjonction[1]);
     
    					//printf("%s",s2);
     
    					i++;
     
    				}
     
    				k++;
     
    			}
     
    		}

  10. #10
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 568
    Points
    41 568
    Par défaut
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    			Conjonction[i] = malloc(sizeof(**Conjonction) * conj_C);
     
    			Conjonction[i] = "";
    Y'a rien qui te choque là-dedans?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #11
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 89
    Points : 29
    Points
    29
    Par défaut
    c'est le : Conjonction[i] = ""; ???


  12. #12
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 568
    Points
    41 568
    Par défaut
    Ben oui: Juste après avoir affecté Conjonction[i], tu écrases le pointeur avec un autre (et une belle fuite de mémoire au passage).

    = ne copie pas les chaînes seulement leur pointeur. En C, on utilise strcpy() ou strncat().
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  13. #13
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 89
    Points : 29
    Points
    29
    Par défaut
    oki d'acc mais à ce moment là j'ai le droit de faire: Conjonction[k][i] = s2[i]; ???

    Où dans ce cas aussi faut faire un strcpy ???

  14. #14
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 568
    Points
    41 568
    Par défaut
    Conjonction[i] est un pointeur.
    Conjonction[k][i] est un caractère.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  15. #15
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 89
    Points : 29
    Points
    29
    Par défaut
    Oui ok mais ce Conjonction[k][i] me crée un Bus Error, même si je fais un Conjonction[k][i] = 'a' par exemple ça me fait un bus error....

  16. #16
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par bartmanb Voir le message
    Oui ok mais ce Conjonction[k][i] me crée un Bus Error, même si je fais un Conjonction[k][i] = 'a' par exemple ça me fait un bus error....
    Montre le code complet réduit au minimum qui produit le défaut...
    Pas de Wi-Fi à la maison : CPL

  17. #17
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 89
    Points : 29
    Points
    29
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    int main(int argc, char **argv){
    	FILE *f;
    	int i,j;
    	int k ;
    	char s[2000]="";
    	char s2[2000]="";
    	char lit[4]="";
    	char clause[4]="";
    	char *Modele=calloc(50, sizeof(char));
    	char **Conjonction;
     
    	f=fopen(argv[1],"r");
    	if(f == NULL) {
    		printf("Erreur fopen(%s)\n",argv[1]);
    		return -1;}
    	else{
                    while(fgets (s, 2000, f)!=NULL)	{
    			if( (s[0]=='p')&&(s[2]=='c')&&(s[3]=='n')&&(s[4]=='f') ){ 
    				i=6;
    				j=0;
    				while(s[i] != ' '){
    					lit[j]=s[i]; 
    					i++;
    					j++;
    				}
    				i=i+1;
    				j=0;
    				while( (s[i] != '\n') )	{
    					clause[j]=s[i]; 
    					i++;
    					j++;
    				}
    				conj_L = atoi(lit);
    				conj_C = atoi(clause);
    			}}
    		fclose(f);
    		Conjonction = malloc(sizeof(*Conjonction) * conj_L);
    		for(i=0; i< conj_L; i++)
    			Conjonction[i] = malloc(sizeof(**Conjonction) * conj_C);
     
    		f=fopen(argv[1],"r");
    		k=0;
    		while(fgets (s2, 2000, f)!=NULL){
    			if(((s2[0] ==' ')||(s2[0]=='-')))
    			{
    				i=0;
    				while( (s2[i+1]!=' ') && (s2[i+2]!= '0')){
                                            Conjonction[k][i] = 'a';
    					i++;
    				}
    				k++;
    			}}}
      return EXIT_SUCCESS;}
    Voilà le code alors un petit truc en plus genre si je fais Conjonction[0][0] = 'a' forcément ça marche ...

  18. #18
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par bartmanb Voir le message
    <...>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    Project   : Forums
    Compiler  : GNU GCC Compiler (called directly)
    Directory : C:\dev\forums\
    --------------------------------------------------------------------------------
    Switching to target: default
    Compiling: main.c
    main.c: In function `main':
    main.c:2: error: `FILE' undeclared (first use in this function)
    main.c:2: error: (Each undeclared identifier is reported only once
    main.c:2: error: for each function it appears in.)
    main.c:2: error: `f' undeclared (first use in this function)
    main.c:9: warning: implicit declaration of function `calloc'
    main.c:12: warning: implicit declaration of function `fopen'
    main.c:13: error: `NULL' undeclared (first use in this function)
    main.c:14: warning: implicit declaration of function `printf'
    main.c:17: warning: implicit declaration of function `fgets'
    main.c:33: error: `conj_L' undeclared (first use in this function)
    main.c:33: warning: implicit declaration of function `atoi'
    main.c:34: error: `conj_C' undeclared (first use in this function)
    main.c:36: warning: implicit declaration of function `fclose'
    main.c:37: warning: implicit declaration of function `malloc'
    main.c:53: error: `EXIT_SUCCESS' undeclared (first use in this function)
    main.c:9: warning: unused variable `Modele'
    main.c: At top level:
    main.c:1: warning: unused parameter 'argc'
    Process terminated with status 1 (0 minutes, 2 seconds)
    8 errors, 9 warnings
    Quels sont les mots que tu ne comprends pas dans
    Montre le code complet réduit au minimum qui produit le défaut...
    Pas de Wi-Fi à la maison : CPL

  19. #19
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par bartmanb Voir le message
    ups sorry je croyais que tu voulais tout le code.
    En bien justement, comme indiqué je veut que le code soit complet, c'est à dire compilable. Même en ajoutant les headers manquants, j'ai ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Project   : Forums
    Compiler  : GNU GCC Compiler (called directly)
    Directory : C:\dev\forums\
    --------------------------------------------------------------------------------
    Switching to target: default
    Compiling: main.c
    main.c: In function `main':
    main.c:44: error: `conj_L' undeclared (first use in this function)
    main.c:44: error: (Each undeclared identifier is reported only once
    main.c:44: error: for each function it appears in.)
    main.c:45: error: `conj_C' undeclared (first use in this function)
    main.c:13: warning: unused variable `Modele'
    main.c: At top level:
    main.c:4: warning: unused parameter 'argc'
    Process terminated with status 1 (0 minutes, 0 seconds)
    4 errors, 2 warnings
    Alors vérifie avant de poster STP... on a pas que ça à faire...
    Pas de Wi-Fi à la maison : CPL

  20. #20
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 89
    Points : 29
    Points
    29
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    #include <stdlib.h>
    #include <stdio.h>
    #include <ctype.h>
    #include <string.h
    #include <unistd.h>
     
    #define FALSE 0
    #define TRUE 1
    #define MAX 100
    char *VAL;
    char *FAIL="1234";
    int conj_L; //nombre de litteraux
    int conj_C; //nombre de clauses
     
    int main(int argc, char **argv)
    {
    	FILE *f;
    	int i,j;
    	int k ;
    	char s[2000]="";
    	char s2[2000]="";
    	char lit[4]="";
    	char clause[4]="";
    	char *Modele=calloc(50, sizeof(char));
    	char **Conjonction;
     
    	f=fopen(argv[1],"r");
    	if(f == NULL) {
    		printf("Erreur fopen(%s)\n",argv[1]);
    		return -1;
    	}
    	else
    	{
    		while(fgets (s, 2000, f)!=NULL)
    		{
    			if( (s[0]=='p')&&(s[2]=='c')&&(s[3]=='n')&&(s[4]=='f') )
    			{ 
    				i=6;
    				j=0;
    				while(s[i] != ' ')
    				{
    					lit[j]=s[i]; 
    					i++;
    					j++;
    				}	
    				i=i+1;
    				j=0;
    				while( (s[i] != '\n') )
    				{
    					clause[j]=s[i]; 
    					i++;
    					j++;
    				}
    				conj_L = atoi(lit);
    				conj_C = atoi(clause);
    			}			
    		}
    		fclose(f);
    		Conjonction = malloc(sizeof(*Conjonction) * conj_L);
     
    		for(i=0; i< conj_L; i++) 
    			Conjonction[i] = malloc(sizeof(**Conjonction) * conj_C);
    		f=fopen(argv[1],"r");
    		k=0;
    		while(fgets (s2, 2000, f)!=NULL)
    		{
    			if(((s2[0] ==' ')||(s2[0]=='-')))
    			{
    				i=0;
    				while( (s2[i+1]!=' ') && (s2[i+2]!= '0'))
    				{
    					Conjonction[k][i] = 'a';
    					i++;
    				}
    				k++;
    			}
    		}
    	}
      return EXIT_SUCCESS;
    }

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Réponses: 6
    Dernier message: 15/04/2008, 00h38
  2. comment stocker les données d'une hashtable dans un fichier?
    Par mokh7 dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 02/04/2008, 02h31
  3. Réponses: 13
    Dernier message: 20/11/2006, 17h46
  4. Comment mettre les lignes d'un fichier dans un tableau en shell
    Par Ombrius dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 23/10/2006, 12h34
  5. Réponses: 14
    Dernier message: 19/11/2005, 18h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo