我遇到了scanf()
函數的問題。當我編譯並運行此代碼C:scanf()函數不工作,因爲它應該
int ID;
char* name = NULL;
char sex;
float quiz1;
float quiz2;
float midscore;
float finalscore;
float totalscore;
printf("please enter the student information.\n");
printf("ID: ");
scanf("%i", &ID);
printf("Name: ");
scanf(" %s", name);
printf("Sex: ");
scanf(" %c", &sex);
printf("Quiz mark(first semester): ");
scanf(" %f", &quiz1);
printf("Quiz mark(second semester): ");
scanf(" %f", &quiz2);
printf("Mid-term score: ");
scanf(" %f", &midscore);
printf("Final score: ");
scanf(" %f", &finalscore);
printf("Total score: ");
scanf(" %f", &totalscore);
我得到的是:
ID:5
名:Alex
性別:測驗標誌(第一學期):測驗標誌(第二學期) :中期得分:最終得分:總得分:
有人能解釋我發生了什麼事嗎?
當調用'scanf()'函數族時,總是檢查返回值(而不是參數值)以確保操作成功。當使用'%s'輸入/轉換說明符時,請始終使用比輸入緩衝區長度小1的'最大長度'修飾符,以便用戶不能超出輸入緩衝區。請記住,這些輸入中的每一個都是用一個換行字符序列結尾的。 '%s'在處理空白方面存在問題。並且'%c'將從前一個輸入中輸入換行符,這些中的每一個都可以通過使用格式字符串中的前導空格來修復。例如, – user3629249