我對C非常陌生,並且在將數據輸入到程序時遇到了問題。獲取前在C. Scanf中輸入。問題
我的代碼:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
int a;
char b[20];
printf("Input your ID: ");
scanf("%d", &a);
printf("Input your name: ");
gets(b);
printf("---------");
printf("Name: %s", b);
system("pause");
return 0;
}
它允許輸入ID,但它只是跳過輸入的其餘部分。如果我改變這樣的命令:
printf("Input your name: ");
gets(b);
printf("Input your ID: ");
scanf("%d", &a);
它會工作。雖然,我不能改變順序,我需要它就像現在一樣。有人能幫我嗎 ?也許我需要使用其他一些功能。謝謝!
得到(3): 「的獲得()函數不能安全地使用,因爲它缺乏 邊界檢查,而不能用於調用程序。可靠的 確定下一條輸入線的長度,使用此功能 可以使惡意用戶通過緩衝區溢出攻擊任意改變正在運行的程序的功能。強烈建議 fgets()函數用於所有c ASES。 (請參閱FSA。)「 不要使用它 – 2010-03-02 20:39:01
更簡單:如果你使用'gets',飛行的狂暴攻擊豹貓會撕開你的眼窩,所以不要 – 2010-03-02 20:45:08
'scanf'是**邪惡* * - http://c-faq.com/stdio/scanfprobs.html – jschmier 2010-03-02 22:07:05