1

在我的程序中的以下代码中:

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]:<按下 Y>

输入学生 2 的记录

名称:<没有光标出现,无法在此处提供输入>

地址:<这里只能输入>

.

.

..... ETC..

发生了什么事,为什么在 do...while 循环中的第一次迭代后我无法输入名称。getche() 有什么问题吗?

希望得到您的帮助

提前致谢

4

1 回答 1

1

你需要fflush(stdin)在你的开头do{...}while因为getche()在输入缓冲区中留下一个换行符。

于 2012-11-23T16:50:06.093 回答