Rechercher : dans
Par :

Lecture fichier en C

Dernière réponse le 27 jan 2007 à 17:19:39 frizou, le 11 oct 2005 à 16:38:31 
 Signaler ce message aux modérateurs

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!

Meilleures réponses pour « lecture fichier en C » dans :
Comment lire un fichier ligne par ligne VoirComment lire un fichier ligne par ligne Préambule Boucle while Syntaxe Exemple Astuces Bonus Boucle for Syntaxe Préambule Une des erreurs les plus communes dans l'apprentissage des scripts "bash" sous GNU/LInux pour lire un fichier...
[Gravure] Graver ou lire un fichier .NRG VoirUn fichier .NRG est une image de CD, c'est-à-dire une copie binaire d'un CD ou d'un DVD sous forme d'un fichier Les fichiers .NRG sont utilisables par des programmes de gravure ou bien des lecteurs de disques virtuels (tels que Daemon...
Fichier EPS VoirFormat EPS Un fichier EPS (Encapsulated PostScript) est un fichier PostScript encapsulé, c'est-à-dire un fichier PostScript prévu pour pouvoir être incorporé dans un autre fichier. Comment lire un fichier EPS ? Pour ouvrir un tel fichier, il...
Fichier ISO (Image ISO) VoirFormat ISO Un fichier possédant l'extension .ISO est une image ISO, c'est-à-dire une image d'un disque (CD, DVD ou disque dur) sous forme de fichier, créer avec un logiciel de gravure. Comment lire un fichier ISO ? En l'absence de graveur, il...
Fichier CDA VoirFormat CDA Un fichier CDA est le plus souvent un fichier-"plage" (ou "piste") directement issu d'un CD audio. Lire un fichier CDA Pour lire de tels fichiers, il suffit de télécharger un lecteur capable de lire les CD audio, par exemple...

1

kilian, le 11 oct 2005 à 17:02:37
  • +3

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:

#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; 
} 

Répondre à kilian

5

 Armand, le 27 jan 2007 à 17:19:39
  • +2

Salut Kilian, il vaut mieux faire :

fseek(fic,0,SEEK_END);

que

fseek(fic,SEEK_END,0);

salut

Répondre à Armand

2

Luffy =), le 11 oct 2005 à 17:03:24

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 ! Le Parisien, il vaut mieux l'avoir en journal !!! :-P

Répondre à Luffy =)

3

Char Snipeur, le 11 oct 2005 à 17:04:56

Erreur de fscanf et de temp.
il me semble qu'avec scanf il faut initialiser la taille du tableau.
autre chose, tu devrais tester que ton fichier est bien ouvert .
if ((fichier=fopen(...))==0) printf("erreur d'ouvertur");
et dans un cas comme ça, utilise un debuggeur, il te dira ou est l'erreur. Salutation !
Char Snipeur

Répondre à Char Snipeur

4

frizou, le 11 oct 2005 à 17:12:47

Merci beaucoup Killian pour ce coup de main, ca marche niquel!

merci aux autres!

Répondre à frizou
Collection CommentÇaMarche.net