[C]Problema array di stringhe

di il
3 risposte

[C]Problema array di stringhe

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?

3 Risposte

  • Re: [C]Problema array di stringhe

    Ricordati che alla funzione stampa stai passando un array di caratteri, quindi per come la vuoi utilizzare tu dovresti scrivere:
    
    void stampa ( char* a )
    {
       puts((a+0));
       puts((a+50));
    }
    
  • Re: [C]Problema array di stringhe

    Ovvero scrivi
    
    void stampa ( char a[][50] )
    {
       puts(*a);
       puts(*(a+1));
    }
    
    che richiamerai con
    
       stampa ( a );
    
  • Re: [C]Problema array di stringhe

    Grazie ad entrambi, problema risolto!
Devi accedere o registrarti per scrivere nel forum
3 risposte