scanf讀取的是當前鍵盤緩衝區中的資料,而不是使用者當前的輸入的資料,
所以當鍵盤緩衝區清空的不及時的話,
會導致讀入資料不正確。
在這個程式碼中就是由於編譯系統本身對於鍵盤緩衝區清空的不及時,
導致scanf讀入了上次輸入資料時最後輸入的回車,做為了本次使用者輸入,
可以人為的強制進行鍵盤緩衝區清空,來解決這個問題。
fflush(stdin);//強制進行鍵盤緩衝區清空語句
這麼改:
charsex,*num,*name,*birth,*add;
intage;
printf("studentnum:");
fflush(stdin);
scanf("%s",num);
printf("studentname:");
scanf("%s",name);
printf("studentage:");
scanf("%d",&age);
printf("studentsex:");
scanf("%c",&sex);
printf("studentbrith:");
scanf("%s",birth);
printf("studentadd:");
scanf讀取的是當前鍵盤緩衝區中的資料,而不是使用者當前的輸入的資料,
所以當鍵盤緩衝區清空的不及時的話,
會導致讀入資料不正確。
在這個程式碼中就是由於編譯系統本身對於鍵盤緩衝區清空的不及時,
導致scanf讀入了上次輸入資料時最後輸入的回車,做為了本次使用者輸入,
可以人為的強制進行鍵盤緩衝區清空,來解決這個問題。
fflush(stdin);//強制進行鍵盤緩衝區清空語句
這麼改:
charsex,*num,*name,*birth,*add;
intage;
printf("studentnum:");
fflush(stdin);
scanf("%s",num);
printf("studentname:");
fflush(stdin);
scanf("%s",name);
printf("studentage:");
fflush(stdin);
scanf("%d",&age);
printf("studentsex:");
fflush(stdin);
scanf("%c",&sex);
printf("studentbrith:");
fflush(stdin);
scanf("%s",birth);
printf("studentadd:");