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;
}
Était-ce utile?

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:

  1. const char* de retour de c() de sorte que l'appelant ne peut pas modifier les chaînes résultantes. Toutes ces chaînes sont constants.
  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.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top