écrire d'un un fichier en C !!!!!

Fermé
mind-reader Messages postés 4 Date d'inscription vendredi 1 février 2013 Statut Membre Dernière intervention 26 février 2013 - 26 févr. 2013 à 11:19
roptat Messages postés 276 Date d'inscription samedi 20 octobre 2012 Statut Membre Dernière intervention 26 juillet 2013 - 26 févr. 2013 à 17:18
Bonjour,

j'ai essayer d'ouvrir un fichier et écrire le résultat d'une opération dans le fichier en C,

mais, le code écrit juste des zéro verticale et horizontal dans le fichier .voila le code :

int prudp = (nbudp / count)*100;
int prtcp = (nbtcp / count)*100;
int pricmp = (nbicmp / count)*100;


printf("%d\n", prtcp);
FILE* fichier = NULL;
fichier = fopen("pourcentage.txt", "a");
if (fichier != NULL)
{printf(fichier, "loooo\n");
fprintf(fichier, "%d\n", prtcp);
fprintf(fichier, "%d\n", prudp);
fprintf(fichier, "%d\n", pricmp);
fclose(fichier);
}
else
{printf("error");
}
***************************************
( static int nbudp=0; / static int nbtcp=0; / static int nbicmp=0;)

sont des variable déclaré déclaré au début , pour compté la nombre des packet UDP et TCP

et ICMP dans un code qui capture des packet dans un réseau et écrire le résultat dans un

fichier comme j'ai dit .

c'est quoi le problème qui affiche le zéro dans le fichier svp !!!!!!!!!!!!!


A voir également:

3 réponses

roptat Messages postés 276 Date d'inscription samedi 20 octobre 2012 Statut Membre Dernière intervention 26 juillet 2013 77
Modifié par roptat le 26/02/2013 à 11:34
en dehors du fichier, regarde si tes variables ne sont pas tout simplement à 0...
Si je comprend bien, count est une variable qui contient le nombre de paquets totaux et tu cherches à faire un pourcentage. Multiplie par 100 avant la division par count et ça marchera mieux : int pricmp = (nbicmp / count)*100; fait :
int pricmp //déclare un entier
int pricmp = nbicmp / count // nbicmp < count, donc nbicmp / count < 1. dricmp étant un entier, ça fait 0.
int pricmp = (nbicmp / count)*100; // 0*100 = 0 :)
dans ta boucle tu as un printf (et non fprintf, normal ?)
0
Mzakaria Messages postés 9 Date d'inscription mardi 26 février 2013 Statut Membre Dernière intervention 7 mars 2013 2
26 févr. 2013 à 15:04
J'ai rien compris :/ !!
0
roptat Messages postés 276 Date d'inscription samedi 20 octobre 2012 Statut Membre Dernière intervention 26 juillet 2013 77
26 févr. 2013 à 17:18
quand tu mets 0.9999 dans un int, ça fait 0 (arrondie à l'inférieur). C'est ce qui arrive à tes trois variables.
un code plus correct serait

int prudp = (nbudp*100 / count);
int prtcp = (nbtcp *100/ count);
int pricmp = (nbicmp *100/ count);

voir utiliser des double (ou float).
0