Hola, me ha ocurrido algo muy particular, miren el siguiente programita:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char** argv)
{
char * string = (char*) malloc (sizeof(char)*11);
string[0]='q';
string[1]='w';
string[2]='e';
string[3]='a';
string[4]='s';
string[5]='d';
string[6]='z';
string[7]='x';
string[8]='c';
string[9]='r';
string[10]='f';
string[11]='v';
printf("%s\n",string);
printf("%d\n",strlen(string));
return 0;
}
¿Porque imprime que la longitud del string en de 15, si aloque memoria para 11 elementos?
¿Porque imprime garbage en el ultimo carácter?
Se que se solucionaria agregando un '\0' al final, ¿pero C no lo agrega automaticamente al alocar la memoria?.
Disculpen mi ingenuidad, se que debe ser algo muy basico y gracias por detenerse a leer.
, ¿pero C no lo agrega automaticamente al alocar la memoria?.
en tu mismo codigo te das cuenta que no lo hace, es tu respondabilidad agregarlo
ademas recordar que ahí estas usando 12 elementos y solo reservaste memoria para 11 eso sin contar el caracter nulo que debe
de haber si queres que sea una cadena ANSI.
Muchas gracias por tu respuesta :).