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

  FORUM HardWare.fr
  Programmation
  C

  probleme avec fscanf et EOF

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme avec fscanf et EOF

n°1344406
ojou
Posté le 11-04-2006 à 19:32:16  profilanswer
 

Bonsoir!
Voila je fais un petit prog en C qui doit lire dans un fichier.
Le fichier est composé d'un nombre entier d'un espace d'un autre entier d'un espace entier espace....
 
Je fais un fscanf pour récupérer mon entier et un autre pour vérifier qu'il y a bien l'espace jusqu'a ce que je trouve la fin du fichier mais ça ne fonctionne pas....
 
voila un bout de mon prog:
 

Code :
  1. do
  2. {
  3. fscanf(F,"%d",&nb_bit)
  4. printf("\n%d",nb_bit);
  5. fscanf(F,"%c",&temp)
  6. printf("\nchar%cchar",temp);
  7. if(temp==EOF)
  8.  printf("yataa" );
  9. else if(temp==' ')
  10.  {error=0;
  11.  break;}
  12. if(valeur_bit==1) //change valeur à écrire
  13.  valeur_bit=0;
  14. else valeur_bit=1;
  15. ecrit_fichier(indice, nb_bit,valeur_bit,G);
  16. if(error==1)
  17.  break;
  18. }
  19. while(1);


 
 
 
voila voila... tout ce que ça fait c'est de me retourner le derniere entier de mon fichier texte et un caractere "espace"... si vous pouvez m'aider ça serai super !!!
 
Merci

mood
Publicité
Posté le 11-04-2006 à 19:32:16  profilanswer
 

n°1344425
Emmanuel D​elahaye
C is a sharp tool
Posté le 11-04-2006 à 19:53:00  profilanswer
 

ojou a écrit :

Voila je fais un petit prog en C qui doit lire dans un fichier.
Le fichier est composé d'un nombre entier d'un espace d'un autre entier d'un espace entier espace....
 
Je fais un fscanf pour récupérer mon entier et un autre pour vérifier qu'il y a bien l'espace


C'est pas la peine. Les espaces sont les séparateurs 'naturels' de fscanf(). Tu boucles sur fscanf() en testant le code retour et c'est tout.

Code :
  1. int data;
  2. while (fscanf(fp, "%d", &data) == 1)
  3. {
  4.    printf ("%d\n", data);
  5. }


Message édité par Emmanuel Delahaye le 11-04-2006 à 19:53:25

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1344429
ojou
Posté le 11-04-2006 à 19:59:19  profilanswer
 

Ok je vais essayer ça... merci de ta réponse!

n°1344483
ojou
Posté le 11-04-2006 à 20:53:32  profilanswer
 

Merci ça marche mais maintenant j'ai un autre probleme... plus rien à voir avec le fscanf:
en fait les nombre que je lis dans mon fichier représentent le nombre de '0' puis de '1' puis de '0'... qui constituent des des caracteres.
J'ai fais une fonction qui convertis un tableau octet[8] en caractere (en fait c'est pas vraiment moi, c'est quelqu'un qui me l'a donné mais ça marche pas):
 

Code :
  1. for( compteur2=0 ; compteur2<=7 ; compteur2++ )
  2.    {
  3.    if(octet[compteur2]=='1')   // octet ne contient que des 0 ou des 1
  4.    c |= bit;         // on ajoute le bit courant
  5.    bit = bit<<1;       // on décale d'un cran
  6.    }
  7.    fputc(c,fichier);
  8.   }


 
Sur le principe ça devrait être juste... mais ça m sors tout le temps le même caractere: Ì      
 
Si vous pouviez encore me donner un petit coup de main...  MERCI

n°1344499
skelter
Posté le 11-04-2006 à 21:00:15  profilanswer
 

for( i = 0; i < 8; i++ )
{
c += byte[i] == '1';
c <<= 1;
}

n°1344512
ojou
Posté le 11-04-2006 à 21:07:55  profilanswer
 

.....heu tu pourrais juste m'expliquer stp parce que je suis vraiment à un niveau mediocre en C... (vous aviez déjà remarquez j'imagine)
 
c c'est le caractere, byte mon tableau mais on peut faire << à un caractere??? qu'est-ce que ça représente?

n°1344518
skelter
Posté le 11-04-2006 à 21:12:31  profilanswer
 

un caractere est un type entier et << représente un décalage vers la gauche de la séquence de chiffres qui constitue la représentation binaire de ce nombre
 
si c == 0000 0001 en base 2
et que tu fais
c <<= 1; (equivalent à c = c << 1)
alors
c == 0000 0010 en base 2

n°1344554
ojou
Posté le 11-04-2006 à 21:52:35  profilanswer
 

Je comprends pas pourquoi ça ne marche pas... j'ai vérifier que j'avais les bonnes valeurs dans mon tableau et pourtant le caractere affiché n'a rien à voir !!!
 

Code :
  1. for( i=7 ; i>=0 ; i--)
  2.  {
  3.  c += octet[i]==1;         // on ajoute le bit courant
  4.  c<<=1;       // on décale d'un cran
  5.  }
  6.  printf("\nchar %c\n",c);
  7.  fputc(c,fichier);
  8.  }


 
C'es bien ce que tu as fais! si tu vois une erreur dis le moi stp...
Sinon c'est sympa de m'avoir aidé!!! j'ai vraiment avancé grace à vous!
Merci

n°1344565
skelter
Posté le 11-04-2006 à 22:14:03  profilanswer
 

ouai c'etait faux, il y avit un decalage en trop
 
for( i = 0; i < 8; i++ )
{
c <<= 1;
c += byte[i] == '1';
}

n°1344593
ojou
Posté le 11-04-2006 à 22:58:05  profilanswer
 

Bon je cherchais une erreur qui n'existait pas... en fait je convertissais l'hexa comme du décimal (honte à moi) et forcément j'avais pas le bon caractere....
 
Enfin bon c'est OK maintenant alors un grand merci à vous deux !!!!

mood
Publicité
Posté le 11-04-2006 à 22:58:05  profilanswer
 

n°1345274
ojou
Posté le 12-04-2006 à 16:57:16  profilanswer
 

Me revoila avec un autre probleme... en fait je recupere un fichier composé d'entiers qui compose un fichier image (jpeg par exemple). J'ai essayer d'utiliser mon programme pour décoder mon fichier mais le résultat n'est pas exploitable...
 
J'écris toujours de la meme façon (en %c).
 
Est-ce qu'il y a un moyen de rendre mon prog compatible avec n'importe quel type de fichier?
 
Je n'ai pas trouver utile de refaire un nouveau topic pour ma question...
 
MERCI d'avance !

n°1345412
skelter
Posté le 12-04-2006 à 19:23:38  profilanswer
 

montre un peu le contenu du fichier


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

  probleme avec fscanf et EOF

 

Sujets relatifs
Probleme Recv() [Winsock]Probleme oracle
Problème Zoom JFreeChartProblème de sélection de feuille excel
Problème avec exec(): lancement d'un processusProblème pour déclaration d'un champ auto increment
Probleme script Upload [résolu]Problème récupération Valeur de variable
problème avec le signe supérieur[PHP][XSLT][entity] Problème avec les Entities ...
Plus de sujets relatifs à : probleme avec fscanf et EOF


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