char buffer[10];
strcat(buffer, "hi");
printf("%s", buffer);
In the above code, it prints some weird symbol or number followed by the “hi”, I know strcat is appending to buffer. And I normally zero the memory in buffer. But i’m curious why I usually have to do that.
If i do printf("%i", buffer); without the strcat, it just prints a random number. What is that number? Could anyone explain or link to a tut that explains what is in buffer, before I fill it with anything?
“buffer” is a 10 byte region on the stack, and it’d contain whatever was last written to that region of memory. When you strcat, it would concatenate “hi” after the first null byte in that region (So if the first null byte is beyond 10 bytes, you’d overwrite something on the stack). When you print without zeroing, it’d print the bytes until the first 0 (null). Again, this might print beyond the 10 bytes.
When you printf (%I, buffer), you print the address of that location.