在我的程序下面的代碼:做......雖然並用C getche()
do
{
printf("\nEnter records of student %d: \n", i++);
printf("Name: ");
fgets(record.name, sizeof(record.name), stdin);
printf("\nAddress: ");
fgets(record.address, sizeof(record.address), stdin);
printf("\nClass Level: ");
scanf("%d", &record.classlevel);
printf("\nTelephone Number: ");
scanf("%ld",&record.telephone);
fwrite(&record, sizeof(record),1,fptr);
printf("\n\nAdd another record? [y/n]: ");
}while(getche()=='y');
當我看到輸出,它工作正常首次
輸入記錄學生1
名稱:<一些輸入>
地址:<一些輸入>
職業等級:<一些輸入>
電話號碼:<一些輸入>
添加另一條記錄? [Y/N]:<按下Ÿ>
輸入學生的記錄2
名稱:<沒有光標來了,無法提供在這裏輸入>
地址:<不僅可以在這裏輸入>
。
。
.....等。
發生了什麼事,爲什麼第一次迭代後,我是不能夠輸入名稱在do ... while循環。 getche()是否有問題?
,祝你幫助
由於提前
這已經在SO上討論了數十億次。基本上scanf將緩衝區中的換行符作爲下一個調用的輸入。您需要在每次調用scanf後清除(刷新)輸入緩衝區。 http://stackoverflow.com/questions/3640604/c-getchar-vs-scanf – fayyazkl