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;
}
¿Fue útil?

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:

  1. const char* Regreso de c() manera que el interlocutor no puede modificar las cadenas resultantes. Todas esas cadenas son constantes.
  2. En lugar de la 5 número mágico, que se convertiría en su validez si la matriz cambió, el uso sizeof(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
scroll top