Nous avons une fonction la plus longue, qui renvoie la plus longue sous-chaîne composée de lettres. Exemple:C - Si/Else et pointeurs renvoyant une mauvaise chaîne
longest("112****hel 5454lllllo454")
renverrait: lllllo
Cependant, quand je lance le programme, il semble revenir lllllo454. Voici la fonction:
char *longest(char *s){
char *pMax = NULL;
int nMax = 0;
char *p = NULL;
int n = 0;
int inside = 0; //flag
while(*s!='\0'){
char c = *s;
if((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')){
if(inside == 0){
n = 1;
p = s;
inside = 1;
}
else
n++;
if(inside == 1){
if(n > nMax){
nMax = n;
pMax = p;
inside = 0;
}
}
}//end isLetter if
s++;
}
return pMax;
}
Il y a quelque chose que je ne vois pas ici ... qu'est-ce que vous en pensez?
Ou avoir "int * nMax" comme paramètre de sortie. Si c'est le cas, il vaut mieux avoir des vérifications nuls avant d'assigner à * nMax - c'est une convention commune "je n'ai pas besoin de ça". – Steve314