PDA

View Full Version : [C] passaggio matrice a funzione e accesso agli elementi da funzione


biowep
12-06-2011, 21:10
Ciao
ho una matrice di char che devo passare ad una funzione

#include <stdio.h>
#include <string.h>

int funzione(char[][]);

main(){
char parola[2][5]={"casa", "cane"};
funzione(parola);
getch();
}

int funzione(char parola[][]){
char una_sola_parola[5];

strcpy(una_sola_parola, parola[0]);//dovrebbe copiare "casa" in un_sola_parola
printf("%s", una_sola_parola);
}

l'errore che mi da il compilatore è
"invalid use of array with unspecified bounds"
nella funzione "funzione", sulla riga strcpy...

cosa significa questo errore? perche non posso accedere ad un elemento dell'array passato alla funzione?

BlackShark92
12-06-2011, 23:59
Ciao
ho una matrice di char che devo passare ad una funzione

#include <stdio.h>
#include <string.h>

int funzione(char[][]);

main(){
char parola[2][5]={"casa", "cane"};
funzione(parola);
getch();
}

int funzione(char parola[][]){
char una_sola_parola[5];

strcpy(una_sola_parola, parola[0]);//dovrebbe copiare "casa" in un_sola_parola
printf("%s", una_sola_parola);
}

l'errore che mi da il compilatore è
"invalid use of array with unspecified bounds"
nella funzione "funzione", sulla riga strcpy...

cosa significa questo errore? perche non posso accedere ad un elemento dell'array passato alla funzione?

Se usi questa notazione, devi passare la seconda dimensione della matrice, del tipo matrice[ ][3]...ti consiglio di dichiararla come char**, così l'allochi nel main e la passi ;)

biowep
13-06-2011, 11:51
Se usi questa notazione, devi passare la seconda dimensione della matrice, del tipo matrice[ ][3]...ti consiglio di dichiararla come char**, così l'allochi nel main e la passi ;)
in questo modo mi da errore quando passo l'argomento alla funzione
tipo impompatibile

BlackShark92
13-06-2011, 19:16
in questo modo mi da errore quando passo l'argomento alla funzione
tipo impompatibile

spiegati meglio che non ho capito... In quale modo ti dà errore?
PS. Ovviamente nella definizione di funzione devi cambiare funzione(char [ ][ ]) con funzione(char**)