Buonasera. Vorrei essere aiutato a capire perchè questo semplicissimo codice non va.
Non guardate la funzionalità che è nulla e mi serve solo per porre il problema.
In pratica passo 3 stringhe alla funzione 'Copia' la quale provvede a creare una nuova stringa (un char con n caratteri) uguale a quella passata, copiandola carattere per carattere per poi mostrarla a video.
Passando "pistolero", "aldo" e "mese" dovrebbe mostrare appunto le stesse parole e invece mostra:
pistolero
aldolero
meselero
Il problema è nella variabile 'newstring' che non viene "azzerata" ad ogni chiamata della funzione. Ma rimane con i caratteri dell'ultima parola poui lunga. Perchè? Non dovrebbe reinzializzarsi ad ogni chiamata? (Non sono esperto di C, quindi magari dico cose errate..)
Grazie a chi potrà spiegarmi perchè ciò accade.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void Copia(char str[])
{
int j;
int lungh;
lungh = strlen(str);
char newstring [lungh];
for (j=0;j<lungh;j++)
newstring[j]=str[j];
printf("\n%s", newstring);
}
int main()
{
char testo[3][30]={"pistolero","aldo","mese"};
for (int i=0;i<3;i++)
Copia(testo[i]);
return EXIT_SUCCESS;
}