Array Iteration strstr in c
Frage
Ich frage mich, ob es sicher ist, die folgende Iteration zu tun das erste Vorkommen von str innerhalb des Arrays zu finden, oder wenn es ein besserer Weg. Dank
#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;
}
Lösung
Ja, es ist „sicher“ in dem Sinne, dass der obige Code funktioniert und es gibt keine einfache Möglichkeit, es zu brechen.
Ein wenig fix-up wäre aber robuster:
- Zurück
const char*
vonc()
so dass der Anrufer die resultierenden Strings nicht ändern können. Alle diese Strings sind konstant. - Anstelle der magischen Zahl
5
, die ungültig werden würde, wenn das Array geändert, Verwendungsizeof(list)/sizeof(list[0])
die Anzahl der Elemente in der Liste zu berechnen.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow