Erreur lecture fichier en C

Résolu
clikclik -  
 clikclik -
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   Statut Contributeur Dernière intervention   1 846
 
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
clikclik
 
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   Statut Membre Dernière intervention   84
 
Salut,

Tu obtiens un message d'erreur....c'est à dire ?
0
clikclik
 
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