I found a very interesting question.
When I'm using following code:
int main() {
char * in = "hi, ";
char str[10];
strncpy(str, in, 2);
printf("output = %s", str);
return 0;
}
My result is nothing, the printf
didn't work.
But if I use this:
int main() {
char * in = "hi, ";
char * str = malloc(sizeof(char) * 10) ;
strncpy(str, in, 2);
printf("output = %s", str);
return 0;
}
I can get what I expect.
Why does this happen? Is it because of stack and heap? How exactly does that makes this huge difference?