Salve a tutti, quest'oggi volevo provare a stampare il contenuto di un vettore di stringhe in una funzione e ho riscontrato un problema.
se stampo il vettore nella stessa funzione in cui è dichiarato funziona normalmente.
il problema sorge quando passo questo vettore a un'altra funzione e lo stampo lì: il programma va in crash e non riesco a capirne il motivo.
ecco il codice:
#include <stdio.h>
#include <string.h>
void stampa ( char* );
int main ( )
{
char a[2][50] = { "ciao", "asd" };
printf ( "%s \n%s \n", a[0], a[1] );
system ( "pause" );
stampa ( &a[0][0] );
return 0;
}
void stampa ( char* a )
{
puts ( (a+0) );
puts ( (a+1) );
}
in questo caso non mi va in crash (o anche con il printf se non metto il *), però anzichè stamparmi correttamente "ciao" e "asd", mi stampa "ciao" e "iao".
provando invece a mettere il * nel puts o printf (e quindi fare *(a+0)) mi va in crash.
nel main invece viene stampato correttamente.
dove sbaglio?