Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2782 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  petit probleme en C...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

petit probleme en C...

n°362124
babthefox2​002
Posté le 15-04-2003 à 16:31:48  profilanswer
 

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

mood
Publicité
Posté le 15-04-2003 à 16:31:48  profilanswer
 

n°362139
Tetragramm​aton IHVH
dieu unique =&gt; pensée unique
Posté le 15-04-2003 à 16:35:03  profilanswer
 

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
n°362144
babthefox2​002
Posté le 15-04-2003 à 16:37:45  profilanswer
 

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.  :??:

n°362152
polo021
Posté le 15-04-2003 à 16:40:49  profilanswer
 

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
n°362157
babthefox2​002
Posté le 15-04-2003 à 16:42:02  profilanswer
 

Comment faire pour que l'eof marche alors ??

n°362159
polo021
Posté le 15-04-2003 à 16:44:11  profilanswer
 

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. }

n°362167
babthefox2​002
Posté le 15-04-2003 à 16:46:02  profilanswer
 

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

n°362171
Tetragramm​aton IHVH
dieu unique =&gt; pensée unique
Posté le 15-04-2003 à 16:47:37  profilanswer
 

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
n°362173
polo021
Posté le 15-04-2003 à 16:48:15  profilanswer
 

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?

n°362177
babthefox2​002
Posté le 15-04-2003 à 16:50:19  profilanswer
 

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 ?
 

mood
Publicité
Posté le 15-04-2003 à 16:50:19  profilanswer
 

n°362195
theshockwa​ve
I work at a firm named Koslow
Posté le 15-04-2003 à 16:54:40  profilanswer
 

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
n°362200
babthefox2​002
Posté le 15-04-2003 à 16:56:25  profilanswer
 

ok merci beaucoup, maintenant je serais...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  petit probleme en C...

 

Sujets relatifs
etrange probleme de couleurProbleme de connexion a MySQL ...
probleme de liensproblème gl4java sous debian
probleme formulaire avec formmail...problème de texte multiligne
TreePath : Problème avec tree.expandPath(arbre)SQL petit problème...[Résolu]
Problème : éviter l'exécution prématurée de certaines lignes de code[C] probleme lecture de fichier
Plus de sujets relatifs à : petit probleme en C...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR