pb c - C++ - Programmation
Marsh Posté le 15-05-2002 à 12:12:44
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()
Marsh Posté le 15-05-2002 à 12:26:16
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+,
Marsh Posté le 15-05-2002 à 15:08:41
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 ...
Marsh Posté le 15-05-2002 à 15:10:11
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
Marsh Posté le 15-05-2002 à 15:12:58
Autant pour moi...
Plus l'habitude du C standard, vraiment plus.... Les RAD ont eu raison de moi... va falloir que je m'y remette
Marsh Posté le 16-05-2002 à 01:21:03
HappyHarry a écrit a écrit : ouais, genre while(caractere!='\n' ![]() 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 ![]() |
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+,
Marsh Posté le 15-05-2002 à 11:43:29
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 ?