Un pb avec un strcmp
donomar
-
donomar Messages postés 8 Statut Membre -
donomar Messages postés 8 Statut Membre -
Bonjour,
voici un code source
int calc_log_total_vendu(logement tab[MAX],int nb)
{
int a=0; // nombre total de bien vendu
int i=0; //variable de boucle for
char vend[]={'v','e','n','d','u','\0'};// initialisation de la chaine à comparer avec le statut de chaque logement
for(i=0;i<nb;i++)
{
if(strcmp(tab[i].statut,vend)==0)
{
a=a+1;
}
}
return a;
}
quand je le test
il ne tient pas compte du strcmp
cmt faire..........merci pour votre aide
voici un code source
int calc_log_total_vendu(logement tab[MAX],int nb)
{
int a=0; // nombre total de bien vendu
int i=0; //variable de boucle for
char vend[]={'v','e','n','d','u','\0'};// initialisation de la chaine à comparer avec le statut de chaque logement
for(i=0;i<nb;i++)
{
if(strcmp(tab[i].statut,vend)==0)
{
a=a+1;
}
}
return a;
}
quand je le test
il ne tient pas compte du strcmp
cmt faire..........merci pour votre aide
2 réponses
Pour commencer pour a et i j'utiliserais plutôt des unsigned vu que ce sont des valeurs positives. Et pour initialiser vend :
Ensuite si tu regardes la documentation de strcmp tu t'apercevras que cette fonction retourne 0 si les deux chaînes sont strictement égales (il suffit de taper dans google man strcmp) :
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man3/strcmp.3.html
Si le test ne retourne pas 0 c'est que les deux chaînes diffèrent. Pour le vérifier, affiche les dans la console :
Plutôt que de stocker dans tab une chaîne de caractère indiquant l'état du produit il serait plus économique en mémoire et plus facile en terme de code de manipuler une valeur numérique. Par exemple :
Bonne chance
char *vend = "vendu";
Ensuite si tu regardes la documentation de strcmp tu t'apercevras que cette fonction retourne 0 si les deux chaînes sont strictement égales (il suffit de taper dans google man strcmp) :
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man3/strcmp.3.html
Si le test ne retourne pas 0 c'est que les deux chaînes diffèrent. Pour le vérifier, affiche les dans la console :
printf("tab[i].statut = [%s]\n,tab[i].statut);
printf("vend = [%s]\n,vend);
if(strcmp(tab[i].statut,vend)==0) {
....
}
Plutôt que de stocker dans tab une chaîne de caractère indiquant l'état du produit il serait plus économique en mémoire et plus facile en terme de code de manipuler une valeur numérique. Par exemple :
#define NON_VENDU 0
#define VENDU 1
...
if(tab[i] == VENDU){ //tab stocke désormais une valeur numérique
...
}
Bonne chance