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

mind-reader Messages postés 7 Statut Membre -  
roptat Messages postés 284 Statut Membre -
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 284 Statut Membre 77
 
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 14 Statut Membre 2
 
J'ai rien compris :/ !!
0
roptat Messages postés 284 Statut Membre 77
 
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