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;
}
È stato utile?

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:

  1. const char* Ritorno da c() modo che il chiamante non può modificare le stringhe risultanti. Tutte quelle stringhe sono costanti.
  2. Al posto del numero 5 magica, che sarebbe diventato valida se la matrice è cambiato, utilizzare sizeof(list)/sizeof(list[0]) per calcolare il numero di elementi nella lista.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top