Tengo una matriz de cadenas que cuando repito e imprimo sus elementos me da resultados inesperados.Conjuntos de cadenas en C
char currencies[][3] = {"EUR", "GBP", "USD", "JPY", "CNY"};
void show_currencies()
{
int i;
for(i=0; i<5; i++)
{
printf("%s - ", currencies[i]);
}
}
cuando llamo a show_currencies()
Lo consigo en la salida.
EURGBPUSDJPYCNY - GBPUSDJPYCNY - USDJPYCNY - JPYCNY - CNY -
¿Alguien puede explicar este comportamiento?
Gracias
cualquier compilador decente debería dar error o al menos advertencia para este – chappar
@chapper, @martani: No tengo una copia del estándar c a mano, pero creo que dejar caer silenciosamente el byte NUL en este caso es explícitamente permitido por el estándar. Al menos al mismo tiempo, habría habido una cantidad razonable de código que utilizó esta técnica para inicializar matrices de caracteres fijos, porque es mucho más conciso que simplemente enumerar los valores de caracteres uno a uno. –