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

  FORUM HardWare.fr
  Programmation
  C++

  pb c

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

pb c

n°139169
cooltwan
Posté le 15-05-2002 à 11:43:29  profilanswer
 

voivi un petit probleme dont je suis sur que vous me donnerez la
solution rapidement vu que vous etes tres balaises.
 
le programme est en C, il s'agit de lire des donnes sur une ligne dans
un fichier
 
/* variables locales :
FILE    *FemFile;
float        nombre;
char        caractere;
 
/* On ouvre le fichier en lecture:
FemFile=fopen("test1.fem" )
 
/* on doit lire un blanc, un reel, puis des caracteres jusqu'a ce qu'on
arrive en fin de ligne
/* le but est d'ecrire le reel
fscanf(FemFile,"%c",&caractere);
fscanf(FemFile,"%f",&nombre);
printf("%f",nombre);
do
{
    fscanf(FemFile,"%c",&caractere)
} while(strcmp(&caractere,"\n" )!=0);
 
Et la, le test d'arret ne marche pas, il continue a lire indefiniement
les caracteres sur les autres lignes
Alors que si on ecrit le 1er blanc ( printf(FemFile,"%c",caractere) ) a
la place du reel, le test d'arret fonctionne.
 
Etrange, non ?

mood
Publicité
Posté le 15-05-2002 à 11:43:29  profilanswer
 

n°139196
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 15-05-2002 à 12:12:44  profilanswer
 

Il y a un truc qui m'interpelle dans ton source...
 
Quand te déplaces tu dans le fichier ?? C'est bien beau de lire des caractères, mais il faut parcourir le fichier pour lire les autres...
 
fseek()


---------------
J'ai un string dans l'array (Paris Hilton)
n°139204
gilou
Modérateur
Modosaurus Rex
Posté le 15-05-2002 à 12:26:16  profilanswer
 

cooltwan a écrit a écrit :

voivi un petit probleme dont je suis sur que vous me donnerez la
solution rapidement vu que vous etes tres balaises.
 
le programme est en C, il s'agit de lire des donnes sur une ligne dans
un fichier
 
/* variables locales :
FILE    *FemFile;
float        nombre;
char        caractere;
 
/* On ouvre le fichier en lecture:
FemFile=fopen("test1.fem" )
 
/* on doit lire un blanc, un reel, puis des caracteres jusqu'a ce qu'on
arrive en fin de ligne
/* le but est d'ecrire le reel
fscanf(FemFile,"%c",&caractere);
fscanf(FemFile,"%f",&nombre);
printf("%f",nombre);
do
{
    fscanf(FemFile,"%c",&caractere)
} while(strcmp(&caractere,"\n" )!=0);
 
Et la, le test d'arret ne marche pas, il continue a lire indefiniement
les caracteres sur les autres lignes
Alors que si on ecrit le 1er blanc ( printf(FemFile,"%c",caractere) ) a
la place du reel, le test d'arret fonctionne.
 
Etrange, non ?  




&caractere est l'adresse d'un char. Ca en fait pas une chaine C.
Compares plutot caractere et '\n'.
A+,


---------------
There's more than what can be linked! --  Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- Il ne faut plus dire Sarkozy, mais Sarkozon -- (╯°□°)╯︵ ┻━┻
n°139286
HappyHarry
Posté le 15-05-2002 à 15:08:41  profilanswer
 

Harkonnen a écrit a écrit :

Il y a un truc qui m'interpelle dans ton source...
 
Quand te déplaces tu dans le fichier ?? C'est bien beau de lire des caractères, mais il faut parcourir le fichier pour lire les autres...
 
fseek()  




 
euh ... nan le pointeur se deplace tout seul quand tu lis un fichier ...

n°139289
HappyHarry
Posté le 15-05-2002 à 15:10:11  profilanswer
 

gilou a écrit a écrit :

 
&caractere est l'adresse d'un char. Ca en fait pas une chaine C.
Compares plutot caractere et '\n'.
A+,  




 
ouais, genre while(caractere!='\n';), c bcp plus simple et beaucoup plus juste
vu que &caractere est une chaine de 1 caractere non terminée par un \0, il lit dans la memoire jusqu'a en trouver un .... pas tres bo ca  :D

n°139290
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 15-05-2002 à 15:12:58  profilanswer
 

Autant pour moi... [:wolfman]  
 
Plus l'habitude du C standard, vraiment plus.... Les RAD ont eu raison de moi... va falloir que je m'y remette  :heink:


---------------
J'ai un string dans l'array (Paris Hilton)
n°139590
gilou
Modérateur
Modosaurus Rex
Posté le 16-05-2002 à 01:21:03  profilanswer
 

HappyHarry a écrit a écrit :

 
 
ouais, genre while(caractere!='\n';), c bcp plus simple et beaucoup plus juste
vu que &caractere est une chaine de 1 caractere non terminée par un \0, il lit dans la memoire jusqu'a en trouver un .... pas tres bo ca  :D  




En fait, non, il lit au maximum les 2 premiers caracteres pointes par &caractere, puisque il trouve un 0 comme second caractere de "\n".
A+,


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

  pb c

 

Sujets relatifs
Plus de sujets relatifs à : pb c


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)