PDA

View Full Version : [C] Confronto tra caratteri di un array bidimensionale e monodimensionale


biowep
12-06-2011, 00:42
Ciao
Ho bisogno di fare un confronto tra due caratteri contenuti uno in un array bidimensionale passato come argomento ad una funzione e l'altro in un array monodimensionale
vi faccio un esempio del codice
int funzione(char*);
main(){
char parola[a][b]={};
funzione(parola[2]);/*credo che, siccome ho passato un elemento dell'array e non tutto intero
l'array con cui lavoro dentro la funzione sia solo ciò che è contenuto in questo elemento
quindi dentro la funzione lavoro con un array MONODIMENSIONALE e non BIDIMENSIONALE come quello iniziale
su questo non sono molto sicuro, quindi se qualcuno riuscisse a spiegarmi questa cosa...

}
funzione(char *parola){
int i, v;
char vocale[5]={'a','e','i','o','u'};
for(i=0; i<strlen(parola); ++i){
for(v=0; v<5; ++v){
if(parola[i]==vocali[v]) /* È vocale */
else /* È consonante */
}
}

In fase di compilazione non compare nessun errore, né warning ma
inserendo qualsiasi parola il programma si crasha.
Il debug da questo errore:
"Il programma ha causato una violazione di accesso (errore di segmentazione)."
e seleziona di blu la riga if(parola[i]==vocali[v]) /* È vocale */

Sto usando Dev C++ 4.9.9.2

BlackShark92
12-06-2011, 01:30
hai chiamato l'array vocale, e in seguito (nella riga con l'errore) vocali :muro: :D

biowep
12-06-2011, 10:10
hai chiamato l'array vocale, e in seguito (nella riga con l'errore) vocali :muro: :D
no scusa, questo codice l'ho scritto per descrivere la situazione in cui si presenta l'errore
comunque avevo specificato che si compila senza dare alcun errore ma si crasha in fase di esecuzione del file compilato

EDIT: Scusate, ho trovate l'errore: nel secondo ciclo avevo incrementato il PRIMO indice invece del SECONDO, quindi automaticamente si accedeva ad un elemento dell'array inesistente