petit probleme en C...

petit probleme en C... - C++ - Programmation

Marsh Posté le 15-04-2003 à 16:31:48    

bonjour a tous,
j'aurais besoin d'un peu d'aide en C, rien de bien mechant a mon avis mais la je ne trouve pas le pourquoi du comment...
 
Je voudrais savoir pourquoi en faisant quelque chose du genre :
 
 
#include<stdio.h>
 
main () {
  FILE *fichier;
  char base,nom[5];
 
  puts("nom :" );
  scanf("%s",&nom);
  fichier=fopen(nom,"r" );
 
  while(!feof(fichier)) {
    fscanf(fichier,"%c",&base);
    printf("%c\n",base);
    }
 fclose(fichier);
}
 
 
 
si je lui rentre comme nom de fichier "seq" dans lequel se trouve la sequence suivante : ATGTGATGA
 
Le programme m'affiche A T G T G A T G A A
 
Je ne comprend pas pourquoi il passe une fois de plus dans ma boucle "while" car du coup il me compte 2 fois la derniere lettre ...
 
Je pense que c'est un truc tout bête mais là je ne trouve pas.
Je vous remercie d'avance.
 
                       Baba

Reply

Marsh Posté le 15-04-2003 à 16:31:48   

Reply

Marsh Posté le 15-04-2003 à 16:35:03    

N'y a-t-il pas un caractère qui traine après le 'A' final ?


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
Reply

Marsh Posté le 15-04-2003 à 16:37:45    

non aucun je viens de creer le fichier "seq" en tapant la suite de lettre ATGTGATGA et puis c'est tout. Je n'ai même pas fait de retour à la ligne.  :??:

Reply

Marsh Posté le 15-04-2003 à 16:40:49    

babthefox2002 a écrit :

non aucun je viens de creer le fichier "seq" en tapant la suite de lettre ATGTGATGA et puis c'est tout. Je n'ai même pas fait de retour à la ligne.  :??:  


je parie pour ton eof
EDIT : tu dois d'abord lire un caractere avant ta boucvle while ou alors tu fais un truc du genre while(fscanf)


Message édité par polo021 le 15-04-2003 à 16:41:46
Reply

Marsh Posté le 15-04-2003 à 16:42:02    

Comment faire pour que l'eof marche alors ??

Reply

Marsh Posté le 15-04-2003 à 16:44:11    

babthefox2002 a écrit :

Comment faire pour que l'eof marche alors ??


fais une recherche, il y a deja eu bcp de debats sur l'utilisatiuon de eof
mais je te conseil

Code :
  1. #include<stdio.h>
  2. main () {
  3. FILE *fichier;
  4. char base,nom[5];
  5. puts("nom :" );
  6. scanf("%s",&nom);
  7. fichier=fopen(nom,"r" );
  8. fscanf(fichier,"%c",&base);
  9. while(!feof(fichier)) {
  10.       printf("%c\n",base);
  11.       fscanf(fichier,"%c",&base);
  12.    }
  13. fclose(fichier);
  14. }

Reply

Marsh Posté le 15-04-2003 à 16:46:02    

avec while(fscanf) ça ne marche pas...

Reply

Marsh Posté le 15-04-2003 à 16:47:37    

babthefox2002 a écrit :

Comment faire pour que l'eof marche alors ??


 

Code :
  1. while (EOF != fscanf(fichier,"%c",&base)) {
  2.     printf("%c", base);
  3. }



---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
Reply

Marsh Posté le 15-04-2003 à 16:48:15    

babthefox2002 a écrit :

avec while(fscanf) ça ne marche pas...


normal, pour ca je ne suis pas sur mais va voir , ca a deja ete aborde maintes et maintes fois. Sinon ma solution avec la lecture avant devrait fonctionner non?

Reply

Marsh Posté le 15-04-2003 à 16:50:19    

ok merci ça marche bien avec ton programme.
Merci beaucoup, mais comment se fait-il qu'avec mon programme ça ne marchait pas ? Tu dis que c'est la fonction "feof" qui est bizarre ?
 

Reply

Marsh Posté le 15-04-2003 à 16:50:19   

Reply

Marsh Posté le 15-04-2003 à 16:54:40    

En fait, quand ta lecture de fichier trouve le EOF, le caractère lu n'est pas à afficher, hors, tu affiche le caractère avant même de faire le test sur le retour de ta fonction ... Erreur courante ...


---------------
last.fm
Reply

Marsh Posté le 15-04-2003 à 16:56:25    

ok merci beaucoup, maintenant je serais...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed