Erreur lecture fichier en C

Résolu/Fermé
clikclik - 11 mars 2009 à 11:14
 clikclik - 11 mars 2009 à 14:09
Bonjour à tous,

Lorsque j'exécute mon code j'obtiens à chaque fois un message d'erreur. J'ai pas mal cherché sur le net mais mon code à l'air correct alors je fais appel à vos compétence pour m'aider.

merci d'avance !

#include <stdio.h>
#include <stdlib.h>


main()
{
//variables
char ligne;
int i=0;

//fichier est un pointeur sur un fichier de type FILE
FILE *fichier;
//ouverture du fichier
fichier = fopen("correspondance.txt", "r");
if(fichier == NULL){
printf("erreur d'ouverture du fichier\n");
}
else{
//parcours du fichier
while (fgetc(fichier) != EOF)
{
fscanf(fichier, "%s", &ligne);
printf("%s ",ligne);
}
fclose(fichier);
}
system("pause");
return 0;
}
A voir également:

2 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 840
11 mars 2009 à 11:55
Salut,
C'est normal, tu demandes au compilateur de mettre une séquence de caractères (%s de scanf) dans un caractère (ligne est de type char).

char ligne[256]; 

De plus, ta lecture de fichier n'est pas complète. Tu perdras une lettre à cause de fgetc à chaque scanf.
Utilise plutôt :
while (fgets(ligne,sizeof ligne,fichier)!=NULL)
{
     printf("%s",ligne); //ou simplement puts(ligne);
} 

fgets va te lire toute la ligne (à condition qu'elle contienne moins de 255 caractères), et ne s'arrêtera pas au premier espace.

Enfin, en C, le prototype de main est : int main(void).

Cdlt
2
Merci beaucoup fiddy,
En effet je n'avais pas compris que le type char ne contenait en fait qu'un seul caractère. Si j'ai bien suivi on défini donc un tableau de caractère pour stocker une chaîne?
Je viens de chercher sur internet la difference entre fgets et fgetc et en effet c'est fgets qui est le plus approprié ici.
Encore merci pour ton aide qui m'a été très précieuse, mon programme fonctionne sans problème maintenant, il ne me reste plus qu'a le finir :)
0
JR des cavernes Messages postés 152 Date d'inscription mardi 6 mai 2008 Statut Membre Dernière intervention 19 mai 2009 84
11 mars 2009 à 11:29
Salut,

Tu obtiens un message d'erreur....c'est à dire ?
0
J'ai une erreur de windows quand je le lance et quand je debug, j'obtiens: "Une violation d'accès (erreur de segmentation) est apparue dans votre programme"
0