c - When does printf("%s", char*) stop printing? -


in class writing our own copy of c's malloc() function. test code (which can allocate space fine) using:

char* ptr = my_malloc(6*sizeof(char)); memcpy(ptr, "hello\n", 6*sizeof(char)); printf("%s", ptr); 

the output typically this:

hello unprintable character 

some debugging figured code wasn't causing per se, ptr's memory follows:

[24 bytes of meta info][number of requested bytes][padding]

so figured printf reaching padding, garbage. ran test of: printf("%s", "test\nd"); , got:

test d 

which makes me wonder, when printf("%s", char*) stop printing chars?

it stops printing when reaches null character (\0), because %s expects string null terminated (i.e., expects argument c string).

the string literal "test\nd" null terminated (all string literals null terminated). character array ptr not, however, because copy 6 characters buffer (hello\n), , not copy seventh character--the null terminator.


Comments

Popular posts from this blog

javascript - Enclosure Memory Copies -

php - Replacing tags in braces, even nested tags, with regex -