我使用Ubuntu 14.04和gcc 4.8.4C:在scanf這份聲明中人物返回垃圾價值
#include<stdio.h>
void main()
{
char c[15];
printf("enter a character\n");
scanf("%15c",c);
printf("%s\n",c);
}
輸出:
enter a character
qwertyuiopasdfghjkl
qwertyuiopasdfg
當我執行以上超過15個字符的程序作爲輸入,輸出不返回垃圾值。但是,當我執行下面的程序:
#include<stdio.h>
void main()
{
char c[5];
printf("enter a character\n");
scanf("%5c",c);
printf("%s\n",c);
}
我給輸入,超過5個字符。它用垃圾值返回輸出。
問題是由'%15c'和'%5c'讀取的值不是空終止的,所以你的兩個代碼都有未定義的行爲。 –
'main()'的返回類型總是'int',而不是'void'。這並不是說這是中心問題。 –
@JohnBollinger雖然不是中心問題,C允許'無效的主要()'每「或在某些其他實現定義的方式」。 C11§5.1.2.2.11 – chux