FRAGMENTEUR / RECONSTRUCTEUR DE FICHIERS [SOURCE C]
cs_Xs
Messages postés368Date d'inscriptionmercredi 14 novembre 2001StatutMembreDernière intervention 1 septembre 2008
-
8 août 2004 à 18:55
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 2004
-
9 août 2004 à 19:58
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 9 août 2004 à 19:58
bien sur que fflush est portable puisqu'elle est definie dans le standard ansi
c'est fflush sur un input stream qui n'a pas de comportement standard, ca marche pas, ca peux planté, et vidé stdin c'est aussi stupide que de vider le tampon d'un FILE* que tu est en train de lire
ps : j'ai testé ton code sa marche mais cette fonction mieux adapté, car on n'attend pas de valeur particulière.
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 9 août 2004 à 02:15
quand ta un '\n' qui traine dans stdin, saute le
mets while( c=fgets(stdin) != '\n' && c != EOF); a la place de fflush(stdin)
fflush sur stdin à un effet indeterminé, c'est pas portable, dangereux et illogique
snip8
Messages postés12Date d'inscriptionsamedi 31 juillet 2004StatutMembreDernière intervention11 août 2004 8 août 2004 à 22:50
Pour le cast du malloc tu as raison, en ce qui concerne les fflush(stdin) essaye de les enlever et tu vas voir sa marche pas des masses.
Donc j'ai enlevé les cast des malloc().
Merci djl.
snip8
Messages postés12Date d'inscriptionsamedi 31 juillet 2004StatutMembreDernière intervention11 août 2004 8 août 2004 à 22:43
Bin en faite le fflush(stdin) j'ai pas eut trop le choix.
Pour le dernier surtout.
parce qu'en faite au lieu demettre conio.h, pour mettre un getch(), j'ai mis un getchar() qui attend que tu appuie sur enter.
Le problème c'est que quand il reste des truc dans stdin sa se ferme sans que tu appuie sur enter.
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 8 août 2004 à 20:52
evite aussi le cast du malloc et le fflush(stdin) qui sont inutiles
snip8
Messages postés12Date d'inscriptionsamedi 31 juillet 2004StatutMembreDernière intervention11 août 2004 8 août 2004 à 19:47
Xs>
Merci je connaissais atoi() mais pas itoa().
Je vais modifier sa.
cs_Xs
Messages postés368Date d'inscriptionmercredi 14 novembre 2001StatutMembreDernière intervention 1 septembre 2008 8 août 2004 à 18:55
Salut !
Pour convertir un int en char*
=> itoa(mon_int,mon_char,10);
9 août 2004 à 19:58
c'est fflush sur un input stream qui n'a pas de comportement standard, ca marche pas, ca peux planté, et vidé stdin c'est aussi stupide que de vider le tampon d'un FILE* que tu est en train de lire
void clear_kb (void)
{
char junk[80];
gets(junk);
}
cette fonction est dans le meme esprit, il vide stdin, apres tu sera meme pas ce que tu lit suivant l'etat du buffer
si tu ve sauter un '\n', il n'y a que cette solution qui soit correcte
while( c=fgets(stdin) != '\n' && c != EOF);
9 août 2004 à 19:23
d'après l'aide de Borland, fflush() est tout à fait portable,
voici une fonction qui te permet de faire la même chose :
void clear_kb (void)
{
char junk[80];
gets(junk);
}
ps : j'ai testé ton code sa marche mais cette fonction mieux adapté, car on n'attend pas de valeur particulière.
9 août 2004 à 02:15
mets while( c=fgets(stdin) != '\n' && c != EOF); a la place de fflush(stdin)
fflush sur stdin à un effet indeterminé, c'est pas portable, dangereux et illogique
8 août 2004 à 22:50
Donc j'ai enlevé les cast des malloc().
Merci djl.
8 août 2004 à 22:43
Pour le dernier surtout.
parce qu'en faite au lieu demettre conio.h, pour mettre un getch(), j'ai mis un getchar() qui attend que tu appuie sur enter.
Le problème c'est que quand il reste des truc dans stdin sa se ferme sans que tu appuie sur enter.
8 août 2004 à 20:52
8 août 2004 à 19:47
Merci je connaissais atoi() mais pas itoa().
Je vais modifier sa.
8 août 2004 à 18:55
Pour convertir un int en char*
=> itoa(mon_int,mon_char,10);
et l'inverse :
mon_int = atoi(mon_char);