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

mind-reader Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
roptat Messages postés 276 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   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 9 Date d'inscription   Statut Membre Dernière intervention   2
 
J'ai rien compris :/ !!
0
roptat Messages postés 276 Date d'inscription   Statut Membre Dernière intervention   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