FRAGMENTEUR / RECONSTRUCTEUR DE FICHIERS [SOURCE C]

cs_Xs Messages postés 368 Date d'inscription mercredi 14 novembre 2001 Statut Membre Dernière intervention 1 septembre 2008 - 8 août 2004 à 18:55
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 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.

https://codes-sources.commentcamarche.net/source/25262-fragmenteur-reconstructeur-de-fichiers-source-c

cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
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


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);
snip8 Messages postés 12 Date d'inscription samedi 31 juillet 2004 Statut Membre Dernière intervention 11 août 2004
9 août 2004 à 19:23
djl>

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.
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
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és 12 Date d'inscription samedi 31 juillet 2004 Statut Membre Dernière intervention 11 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és 12 Date d'inscription samedi 31 juillet 2004 Statut Membre Dernière intervention 11 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és 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
8 août 2004 à 20:52
evite aussi le cast du malloc et le fflush(stdin) qui sont inutiles
snip8 Messages postés 12 Date d'inscription samedi 31 juillet 2004 Statut Membre Dernière intervention 11 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és 368 Date d'inscription mercredi 14 novembre 2001 Statut Membre Dernière intervention 1 septembre 2008
8 août 2004 à 18:55
Salut !

Pour convertir un int en char*
=> itoa(mon_int,mon_char,10);

et l'inverse :
mon_int = atoi(mon_char);
Rejoignez-nous