J'ai trois questions,Que va-t-il se passer -1 comme valeur pour le 3ème paramètre dans strncmp() ie. n nombre d'octets d'octets à comparer?
- Que se passera-on passe -1 en tant que valeur pour le 3ème paramètre dans strncmp() par exemple. n nombre d'octets d'octets à comparer?
- Pourquoi la sortie diffère-t-elle en ARM et PPC? c'est à dire. si celui qui est correct?
Si j'utilise memcmp au lieu de strncmp, je reçois une sortie "inside else" dans ARM et PPC. Comment et pourquoi?
char str[10]; memset(str,'\0',sizeof(str)); printf("str:%s ,len:%d\n\r",str,strlen(str)); if(strncmp(str,"Maximum",(strlen(str)-1)) == 0) { printf("inside if\n\r"); } else { printf("inside else\n\r"); }
Sortie dans ppc
str: ,len:0
inside else
Sortie dans le bras
str: ,len:0
inside if
Le troisième argument de 'strncmp()' est de type 'size_t', qui est non signé. – EOF
Puisque l'une des chaînes est vide, vous comparez 0 caractères de l'un contre 0 caractères de l'autre sans tenir compte de la limite (mais sans la garantie d'égalité que vous auriez si le _limit_ était de 0). – Notlikethat
Qu'est-ce que vous ne comprenez pas ce qui n'est pas décrit dans la documentation des deux fonctions? http://man7.org/linux/man-pages/man3/strcmp.3.html http://man7.org/linux/man-pages/man3/memcmp.3.html – alk