#include <stdio.h>
int main(void) {
char arr[10];
gets(arr);//let's suppose input is "abcdefgshsdfhdsfsh"
printf("%s",arr);//output come is same as input but the allocated arr have 10 bytes memory
//and can store only ten characters but how come it's possible i am getting output
//more than 10 character
return 0;
}
輸出背後的原因是什麼?任何幫助,將不勝感激。任何人都可以解釋爲什麼輸出超過了內存分配?
字符串最後需要'\ 0'。你在這裏展示的是未定義的行爲。 – 101010 2014-10-02 06:09:46
@ 40two:'gets()'終止於用'\ 0''讀取的數據。 – alk 2014-10-02 06:19:48
在沒有解釋**的情況下關閉與UB的這種引用爲什麼**這是UB沒有意義。 – alk 2014-10-02 06:21:52