Je comprends pas strncmp()

Bonjour à touti,

Je comprends pas un truc avec strncmp()
http://www.cplusplus.com/reference/cstring/strncmp/

Voici mon code

// getNameFile = "22-22-22.txt"

if((strncmp(getNameFile,".txt",4) == 0) || (strncmp(getNameFile,".log",4) == 0))
{
  Serial.println(F("getNameFile contient soit .txt ou .log"));  
}
else
{
  Serial.println(F("Fichier interdit"));
}

Si je lis bien la doc, si strncmp retour 0, c'est 4 caractères sont identiques à la suit, car dans mon cas, je compare getNameFile avec .txt ou .log et que j'ai défini 4, dans le dernier paramètre.

Docn si getNameFile à la valeur de "22-22-22.txt" pourquoi il affiche "Fichier interdit"???

GRRR

ce que tu ne sembles pas avoir compris c'est que la comparaison se fait à partir du début de la chaîne, pas à partir de la fin !
donc tu compares "22-2" avec ".log" ou ".txt", normal que ca ne renvoie pas 0 ! :wink:

La fonction que tu devrais utiliser c'est plutôt strstr(), par exemple :

#ifndef NULL
 #define NULL ((void *)0)
#endif

// getNameFile = "22-22-22.txt"

if((strstr(getNameFile,".txt") != NULL) || (strstr(getNameFile,".log") != NULL))
{
  Serial.println(F("getNameFile contient soit .txt ou .log"));  
}
else
{
  Serial.println(F("Fichier interdit"));
}

Si tu veux rechercher si la chaine contient une sous-chaine, il faut utiliser strstr

Bonjour merci!!! J'y suis arrivé, en effet, avec strstr()
Merci