Salut,
Je sais pas si c´est un bug ou pas, mais lorsque j´ai essayé de récupérer 2 chaines venant d´un fichier texte avec fscanf ca a buggé ( 1 seule ca marche) :
char *chaine1, *chaine2;
fscanf(fp,"%s %s",chaine1,chaine2);
meme en les allouant avant ca marchait pas...
Je vous propose la " meme" solution avec une fonction perso dont je vous exmplique le fonctionnement :
char* fgetword(FILE *fp, char separator)
{
char *ret, prep[64], get;
int i;
get=´_´;
i=0;
while ( get!=separator)
{
/ / tst=´ ´;
fscanf(fp,"%c",&);
if ( get!=separator)
{
/ /printf("%c",get);
prep[i]=get;
i++;
}
}
prep[i]=´\0´;
ret = ( char*)strdup(prep);
return ret;
}
Alors cette fonction va recuperer tous les caractères d´un fichier jusqu´à s´arrêter au caractère-séparateur ( dans le cas du fscanf ci dessus, c´est ´ ´ ou ´\n´), les stocker dans une chaine et les renvoyer... Plus simple et plus pratique qu´un fscanf donc...
Ensuite, en continuant mon programme, je tombe sur un bug ultra-bizzare : strcmp ne marche plus, bon, meme chose que tout à l´heure , voici la source de ma version :
bool stringcomp(char *compare, char *comparant)
{
int i, lenfirst, lensecond;
bool reussi;
lenfirst = strlen(compare);
lensecond = strlen(comparant);
if ( lenfirst==lensecond)
{
for ( i=0;i<lenfirst;i++)
{
if ( compare[i]==comparant[i]){}
else return 0;
}
return 1;
}
else return 0;
}
Et là ca marche.
Le problème avec les fonctions ANSI(standard) ne se posaient que sous Windows XP en SP2, ca marchait en SP1, sous tous les autres Windows ( compilé sous Dev-C++) et sous Linux...
Si d´autres ont le meme problème, n´hésitez pas servez vous !
Si j´en ai d´autre je les rajouterai 