Ho una matrice di stringhe che quando eseguo l'iterazione e stampo i suoi elementi mi dà risultati inaspettati.Array di stringhe in C
char currencies[][3] = {"EUR", "GBP", "USD", "JPY", "CNY"};
void show_currencies()
{
int i;
for(i=0; i<5; i++)
{
printf("%s - ", currencies[i]);
}
}
quando chiamo show_currencies()
ottengo questo in uscita.
EURGBPUSDJPYCNY - GBPUSDJPYCNY - USDJPYCNY - JPYCNY - CNY -
Qualcuno può spiegare questo comportamento.
Grazie
qualsiasi compilatore decente dovrebbe dare un errore o almeno un avvertimento per questo – chappar
@chapper, @martani: non ho una copia dello standard c vicino, ma penso che in questo caso il byte NUL rimanga in silenzio esplicitamente consentito dallo standard. Almeno una volta, ci sarebbe stata una ragionevole quantità di codice che usava questa tecnica per inizializzare i char array di dimensioni fisse, perché è molto più conciso che elencare semplicemente i valori char uno per uno. –