IDE:VS2013
OS:Windows7
源碼附上:
#include<windows.h>
#include<stdio.h>
int main()
{
//定義一個People類型的結構體
struct People{
char name[10];//名字
char sex[5];//性別
int age;//年齡
int Class;//班級
}me;
//將me聲明為People類型的結構體變量
printf("Please Input Your Name\n");
scanf_s("%s", &me.name);
printf("Please Input Your sex\n");
scanf_s("%s", &me.sex);
printf("Please Input Your age\n");
scanf_s("%d", &me.age);
printf("Please Input Your Class\n");
scanf_s("%d", &me.Class);
printf("%s", me.name);
printf("%s", me.sex);
printf("%d", me.age);
printf("%d", me.Class);
system("pause");
return 0;
}
問題概述
輸入名字後 程序直接沒了 然後直接打印出後面的三句話了 按程序來說 應該是打印一句話 然後停下來讓我輸入的啊 怎麼我輸入一個 下面三句話都打印出來了
運行結果:
改了下程序 把scanf_s _s去掉後 在Devc++中就可以正常使用
在Devc++中的運行結果
請問各位C前輩 是不是因為VS2013中 對鍵盤緩沖區進行了特殊的處理呢?
scanf_s對於%c和%s格式需要指定數組元素或變量的個數
scanf_s("%s", &me.name,10);
printf("Please Input Your sex\n");
scanf_s("%s", &me.sex,5);
printf("Please Input Your age\n");
scanf_s("%d", &me.age);
printf("Please Input Your Class\n");
scanf_s("%d", &me.Class);