Lecture fichier en C
Résolu
frizou
-
Armand -
Armand -
bonjour a tous
voila g un petit bout de code qui a pour but de lire la premiere ligne d'un fichier entré en parametre a l'execution (donc contenu dans argv[1])
mais voila il le lit bien mais ensuite mon execution m'annonce une "erreur segmentation" arg...
d'ou vient l'erreur?
voila le code:
int main(int argc, char **argv)
{
FILE *fichier;
char *temp;
fichier = fopen(argv[1], "r");
fscanf(fichier, "%s", temp);
printf("voila ce qu'il y a dans temp: ***%s***\n", temp);
fclose(fichier);
return EXIT_SUCCESS;
}
merci!
voila g un petit bout de code qui a pour but de lire la premiere ligne d'un fichier entré en parametre a l'execution (donc contenu dans argv[1])
mais voila il le lit bien mais ensuite mon execution m'annonce une "erreur segmentation" arg...
d'ou vient l'erreur?
voila le code:
int main(int argc, char **argv)
{
FILE *fichier;
char *temp;
fichier = fopen(argv[1], "r");
fscanf(fichier, "%s", temp);
printf("voila ce qu'il y a dans temp: ***%s***\n", temp);
fclose(fichier);
return EXIT_SUCCESS;
}
merci!
A voir également:
- Lecture fichier en C
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
4 réponses
fsanf() va mettre le contenu de ton fichier à l'adresse de temp.
Mais tu n'as alloué aucun espace pour temp, ce n'est qu'un pointeur.
Soit tu déclare un temp assez gros pour prendre le contenu du fichier (char temp[32] si ton fichier fait 32 octets), soit tu fais une allocation memoire de la taille du fichier pour temp:
Mais tu n'as alloué aucun espace pour temp, ce n'est qu'un pointeur.
Soit tu déclare un temp assez gros pour prendre le contenu du fichier (char temp[32] si ton fichier fait 32 octets), soit tu fais une allocation memoire de la taille du fichier pour temp:
#include <stdlib.h>
int main(int argc, char **argv)
{
FILE *fichier;
char *temp;
long taille_file;
fichier = fopen(argv[1], "r");
//On fait pointer fichier vers la fin du fichier
fseek(fichier,SEEK_END,0);
/*On met la taille du fichier dans taille_fichier (car fichier pointe
vers la fin du fichier, sa position donne le nombre d'octets
pour arriver à la fin) */
taille_fichier=ftell(fichier);
//On refait pointer fichier au début du fichier
fseek(fichier,SEEK_SET,0);
//Allocation de temp avec la taille du fichier
temp=(char *)malloc(sizeof(char) * taille_fichier);
fscanf(fichier, "%s", temp);
printf("voila ce qu'il y a dans temp: ***%s***\n", temp);
fclose(fichier);
//On libère temp
free(temp);
return EXIT_SUCCESS;
}
Tu n'as pas alloué de mémoire pour ta variable temp. A moins que fscanf l'alloue tout seul, mais pas sur...
EDIT : mince, trop tard, et moins bien ;-)
Bien joué killian !
EDIT : mince, trop tard, et moins bien ;-)
Bien joué killian !
fseek(fic,0,SEEK_END);
que
fseek(fic,SEEK_END,0);
salut