[C] Segmentation fault lecture fichier
Résolu
lefoufighter
Messages postés
278
Statut
Membre
-
lefoufighter Messages postés 278 Statut Membre -
lefoufighter Messages postés 278 Statut Membre -
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