tableau itération strstr en c
Question
Je me demandais s'il est sûr de faire l'itération suivante pour trouver la première occurrence de str dans le tableau ou s'il y a une meilleure façon. Merci
#include <stdio.h>
#include <string.h>
const char * list[] = {"One","Two","Three","Four","Five"};
char *c(char * str) {
int i;
for (i = 0; i < 5; i++) {
if (strstr(str, list[i]) != NULL) return list[i];
}
return "Not Found";
}
int main() {
char str[] = "This is a simple string of hshhs wo a char";
printf("%s", c(str));
return 0;
}
La solution
Oui, il est « sûr » dans le sens que le code ci-dessus fonctionne et il n'y a pas de moyen facile de le casser.
Un peu fix-up serait toutefois plus robuste:
-
const char*
de retour dec()
de sorte que l'appelant ne peut pas modifier les chaînes résultantes. Toutes ces chaînes sont constants. - Au lieu du nombre magique
5
, qui deviendrait invalide si le tableau a changé, utilisezsizeof(list)/sizeof(list[0])
pour calculer le nombre d'éléments dans la liste.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow