Requete dans un fichier en langage C
Fermé
basopro
Messages postés
100
Date d'inscription
vendredi 11 mars 2011
Statut
Membre
Dernière intervention
3 juin 2015
-
3 juin 2012 à 11:22
Aoec - 4 juin 2012 à 10:29
Aoec - 4 juin 2012 à 10:29
A voir également:
- Requete dans un fichier en langage C
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier rar - Guide
- Ouvrir un fichier .bin - Guide
- Comment ouvrir un fichier docx ? - Guide
2 réponses
Bonjour,
du man de fgets on peut lire :
fgets() lit au plus size - 1 caractères depuis stream et les place dans le buffer pointé par s. La lecture s'arrête après EOF ou un retour-chariot. Si un retour-chariot (newline) est lu, il est placé dans le buffer. Un caractère nul '\0' est placé à la fin de la ligne.
En gros, notre ami fgets récupère le retour-chariot ( \n ) et le place en fin de chaine ( avant le \0 ) ce qui fait que dans un cas tu auras :
AB12Z\0
et dans l'autre
AB12Z\n\0
Les chaines sont effectivement différentes.
Pour palier au problème je te propose fscanf ( il y a sans doutes d'autre solutions ) :
du man de fgets on peut lire :
fgets() lit au plus size - 1 caractères depuis stream et les place dans le buffer pointé par s. La lecture s'arrête après EOF ou un retour-chariot. Si un retour-chariot (newline) est lu, il est placé dans le buffer. Un caractère nul '\0' est placé à la fin de la ligne.
En gros, notre ami fgets récupère le retour-chariot ( \n ) et le place en fin de chaine ( avant le \0 ) ce qui fait que dans un cas tu auras :
AB12Z\0
et dans l'autre
AB12Z\n\0
Les chaines sont effectivement différentes.
Pour palier au problème je te propose fscanf ( il y a sans doutes d'autre solutions ) :
void IdentificationVotant( char *nomVote){ FILE * FichierVotant=NULL; char chaineVotant[TAILLE]; int ResComp=0; FichierVotant= fopen("Votant.txt","r"); if( FichierVotant!=NULL){ while( fscanf(FichierVotant, "%s", chaineVotant)!=EOF){ printf(" voici : %s\n", chaineVotant); printf("%s\n", nomVote); ResComp=strcmp(chaineVotant,nomVote); printf("%d\n", ResComp); if (ResComp==0){ printf(" Les chaine de caracteres sont identiques\n"); } else{ printf(" Les chaine de caracteres sont differentes\n"); } } } fclose(FichierVotant); }
Le Dodo
Messages postés
1934
Date d'inscription
jeudi 10 mars 2011
Statut
Membre
Dernière intervention
27 août 2013
246
3 juin 2012 à 11:26
3 juin 2012 à 11:26
if (chaine1 == chaine 2) { les chaines sont identiques }else { les chaines sont différentes }
chaine 1 ce que tu as entré au clavier, et chaine 2 celle qui est dans le fichier
je crois que c'est ça mais j'en suis pas sûr...