matrice iterazione strstr in c
Domanda
Mi chiedevo se è sicuro di effettuare le seguenti operazioni di iterazione per trovare la prima occorrenza di str all'interno della matrice o se c'è un modo migliore. Grazie
#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;
}
Soluzione
Sì, è "sicuro", nel senso che il codice qui sopra funziona e non c'è modo semplice per romperlo.
Un po 'di fix-up tuttavia sarebbe più robusto:
-
const char*
Ritorno dac()
modo che il chiamante non può modificare le stringhe risultanti. Tutte quelle stringhe sono costanti. - Al posto del numero
5
magica, che sarebbe diventato valida se la matrice è cambiato, utilizzaresizeof(list)/sizeof(list[0])
per calcolare il numero di elementi nella lista.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow