2010-03-29 6 views
1

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. Mercitableau itération strstr dans c

#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; 
} 

Répondre

5

Oui c'est "sûr" dans le sens où le code ci-dessus va fonctionner et il n'y a pas de moyen facile de le casser.

Un peu fix-up serait toutefois plus robuste:

  1. Retour const char* de c() de sorte que l'appelant ne peut pas modifier les chaînes résultantes. Toutes ces chaînes sont constantes.
  2. au lieu du nombre magique 5, qui deviendrait invalide si le tableau a changé, utilisez sizeof(list)/sizeof(list[0]) pour calculer le nombre d'éléments dans la liste.