[C] Segmentation fault lecture fichier
Résolu
lefoufighter
Messages postés
277
Date d'inscription
Statut
Membre
Dernière intervention
-
lefoufighter Messages postés 277 Date d'inscription Statut Membre Dernière intervention -
lefoufighter Messages postés 277 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
je devrais ouvrir un fichier et s'il commence par "drawing" récuperer tous les champs qui suivent; mais pour le moment j'ai un "segmentation fault" si quelqu'un pouvait m'aider :
Merci d'avance pour votre aide
je devrais ouvrir un fichier et s'il commence par "drawing" récuperer tous les champs qui suivent; mais pour le moment j'ai un "segmentation fault" si quelqu'un pouvait m'aider :
int main(int argc, char *argv[]) { int i; const int TAILLE_MAX = 500; char ligne[TAILLE_MAX]; char *tokens[100]; FILE* fichier = NULL; /* ouverture du fichier en lecture seule */ fichier = fopen("usd200607.DAT","r"); if (fichier != NULL) { while (fgets(ligne, TAILLE_MAX-1, fichier) != NULL) { i = 0; tokens[i] = strtok(ligne,"|"); while (tokens[i] != NULL) { tokens[++i] = strtok(ligne," "); } if(strcmp(tokens[0],"Drawing")) printf("%s\n",tokens[1]); fgets(ligne,TAILLE_MAX-1,fichier); } fclose(fichier); } exit(0); }
Merci d'avance pour votre aide
A voir également:
- [C] Segmentation fault lecture fichier
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
5 réponses
Salut,
essaie au lieu de
char *tokens[100];
ecrit
lami20j
essaie au lieu de
char *tokens[100];
ecrit
char *tokens; tokens = (char *) malloc(sizeof(char) * TAILLE_MAX);--
lami20j
mais maintenant il me mets des erreurs qd j'utilise tokens probleme de cast avec les pointeurs je dois changer quoi ?
datSQL.c: In function ‘main’: datSQL.c:29: warning: assignment makes integer from pointer without a cast datSQL.c:30: warning: comparison between pointer and integer datSQL.c:32: warning: assignment makes integer from pointer without a cast datSQL.c:35: warning: passing argument 1 of ‘strcmp’ makes pointer from integer without a cast
C'est moi qui c'est trompé
en fait tu dois bien utiliser char *tokens[100];
vu que tu as besoin d'un tableau de chaînes de caractères
il te reste à allouer de la mémoire
en fait tu dois bien utiliser char *tokens[100];
vu que tu as besoin d'un tableau de chaînes de caractères
il te reste à allouer de la mémoire
tokens = (char **) malloc(100)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
merci déja pour votre aide, en fait ce que je voudrais faire c'est pour chaque ligne commencant par "drawing", je recupere dans tableau tokens[] tous les elements :
Ex dans mon fichier usd200607.DAT j'ai la ligne
Drawing : 0001 | 2006-07-01 | LR 3 | 53917.833 | -02.62 +2.89 003.15 |
et donc que en
tokens[0] <- Drawing
tokens[1] <- 2006-07-01
tokens[2] <- LR 3
et ainsi de suite...
Je ne pense pas que le char **tokens soit nécessaire dans ce cas-ci et modifier les strtok aussi
Ex dans mon fichier usd200607.DAT j'ai la ligne
Drawing : 0001 | 2006-07-01 | LR 3 | 53917.833 | -02.62 +2.89 003.15 |
et donc que en
tokens[0] <- Drawing
tokens[1] <- 2006-07-01
tokens[2] <- LR 3
et ainsi de suite...
Je ne pense pas que le char **tokens soit nécessaire dans ce cas-ci et modifier les strtok aussi