En mi clase estamos escribiendo nuestra propia copia de la función malloc() de C. Para probar mi código (que en la actualidad puede asignar bien el espacio) que estaba usando:¿Cuándo deja de imprimirse printf ("% s", char *)?
char* ptr = my_malloc(6*sizeof(char));
memcpy(ptr, "Hello\n", 6*sizeof(char));
printf("%s", ptr);
La salida típica sería la siguiente:
Hello
Unprintable character
Algunos depuración pensó que mi código no estaba causando este per se , como la memoria de PTR es de la siguiente manera:
[24 bytes de información de metadatos] [Número de bytes solicitados] [Relleno]
por lo que pensé que estaba alcanzando printf en el relleno, que es solo basura. Así que me encontré con una prueba de: printf("%s", "test\nd");
y tengo:
test
d
que me pregunto, ¿cuándo printf ("% s", char *) detener la impresión de caracteres?
Dur, que debería usar \ 0 a interrumpir las cadenas? Dur Dur Dur – user327406
No tiene que agregar \ 0 usted mismo. Cuando crea una cadena literal u obtiene una como entrada, C la agrega por usted. En realidad, no ves el \ 0. Esa cadena "Hello \ n" tiene siete caracteres si mira el código de ensamblaje real. – Uri