array strstr iteración en c
Pregunta
Me estaba preguntando si es seguro para hacer lo siguiente iteración para encontrar la primera aparición de str dentro de la matriz o si hay una mejor manera. Gracias
#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;
}
Solución
Sí, es "seguro" en el sentido de que el código anterior funcionará y no hay manera fácil de romper.
Un poco de corrección de embargo sería más robusto:
-
const char*
Regreso dec()
manera que el interlocutor no puede modificar las cadenas resultantes. Todas esas cadenas son constantes. - En lugar de la
5
número mágico, que se convertiría en su validez si la matriz cambió, el usosizeof(list)/sizeof(list[0])
para calcular el número de elementos en la lista.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow