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

  FORUM HardWare.fr
  Programmation

  [C] passer à la ligne avec fscanf ?

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] passer à la ligne avec fscanf ?

n°107325
torpe23
Posté le 03-03-2002 à 20:46:18  profilanswer
 

Je lis dans un fichier, qqu'uns des premiers mots ( enfin, ici, ce sont des entiers ! ), mais après, je voudrais passer à la ligne directement :
 
while(a<8)
        {
 fscanf(p_fich,"%d:%d:%d\n",&h,&m,&s);
 printf("%d:%d:%d:%s\n",h,m,s);
 a++;
 }
 
donc je fais un \n. Le pb, c'est que ça ne marche pas, il reste tjs à la même ligne !
que faire ?
 
merci d'avance !

mood
Publicité
Posté le 03-03-2002 à 20:46:18  profilanswer
 

n°107353
Jar Jar
Intaigriste
Posté le 03-03-2002 à 22:53:15  profilanswer
 

Je te conseille d'allouer une chaîne et d'utiliser fgets, et ensuite de faire un sscanf dessus, ça marche beaucoup mieux.

n°107402
Rawhead re​x
Argghhhhh
Posté le 04-03-2002 à 12:31:39  profilanswer
 

Le probleme du fscanf c'est que ta chaine de descripteur doit respecter exactement la syntaxe du fichier que tu lis.
Avec le code que tu vient de donner et le fichier texte suivant, ca pose probleme :
1:2:3:4
5:6:7:8
Car la syntaxe n'est pas respectee par ton descripteur "%d:%d:%d\n"
 
2 possibilites :
 -soit tu avance ton pointeur 'p_fich' a la main avec un fseek() si ton fichier a lire est suffisamment bien formate.
 -soit tu bufferise le reste de ta ligne en la stockant dans une chaine de caractere, mais ca ne marchera que si tu n'a pas d'espace(ou alors il faut que tu rajoute autant de variables buffer que necessaire)
 
Exemple:
#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char** argv)
{
  int a=0, h,m,s;
  FILE* p_fich;
  char buffer[100];
 
  p_fich=fopen("test.txt","r" ) ;
  while(a<5)  
    {  
      fscanf(p_fich,"%d:%d:%d%s\n",&h,&m,&s,buffer);  
      printf("%d:%d:%d:%s\n",h,m,s);  
      printf("buffer:%s\n",buffer) ;
      a++;  
    }  
  return 1;
}


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

  [C] passer à la ligne avec fscanf ?

 

Sujets relatifs
[Perl]Comment mettre une ligne en commentaireCaractère de fin de ligne sous Unix ?
[VB] passer un proxy en Winsock[Perl] passer des parametres par reference
Phpmyadmin : il ne m'insère que la première ligne de mon csv..Développement d'un Jeu De Rôle en ligne, ca vous intéresse ?
[HTML] Passer 1 tableau en parametre d'une page vers une autre ...[C] .. elle est bonne cette ligne ?
passer du langage c à pascal[javascript] Passer le nom d'un formulaire en variable
Plus de sujets relatifs à : [C] passer à la ligne avec fscanf ?


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