Mi inserisco anche io con qualche riflessione:

codice:
for(i=0;i<ELEM;i++)
    vettore[i]='\0';
Questa scrittura mi sembra sbagliata... Vettore è un vettore di stringhe, ossia un puntatore a puntatore di caratteri (char** per intenderci..), un generico vettore[i] è una stringa (ossia un char*) e tu lo inizializzi come carattere '\0' (un semplice char)... Di sicuro questo è sbagliato, non ti genera neanche un warning?