Buenas, tengo éste trozo de código:
char ultimorecibido[M];
ultimorecibido[0] = '9';
printf("Cadena cuando hay uno: ");printv(ultimorecibido);
ultimorecibido[1] = '1';
printf("Cadena cuando hay dos: ");printv(ultimorecibido);
ultimorecibido[2] = '0';
printf("Cadena cuando hay tres: ");printv(ultimorecibido);
ultimorecibido[3] = '4';
printf("Cadena recien formada: ");printv(ultimorecibido);
donde M es una constante definida como 1000y printv es una función implementada por mí que imprime un vector de caracteres, evitándome tener que hacer un for para cada caso.
Si se pone éste trozo en la main de un archivo en C, y se ejecuta, la salida es:
Cadena cuando hay uno: 9
Cadena cuando hay dos: 91
Cadena cuando hay tres: 910
Cadena recien formada: 9104hË(
¿Por qué no es la siguiente:?
Cadena cuando hay uno: 9
Cadena cuando hay dos: 91
Cadena cuando hay tres: 910
Cadena recien formada: 9104
Más información: Si sólo se dan valores a los íncides 0, 1 y 2, el resultado es el de esperar:
Cadena cuando hay uno: 9
Cadena cuando hay dos: 91
Cadena recien formada: 910
Para el que piense que el error está en la función printv, creo que puedo garantizar que no, pero la pongo por si acaso:
void printv(char v[]) {
int i;
for (i = 0; i < strlen(v); i++)
printf("%c", v[i]);
printf("\n");
}