【发布时间】:2021-09-03 10:22:02
【问题描述】:
do
{
printf("1 :Enter Company Deatils\n");
printf("2 :Display stoke Deatils\n");
printf("0 :Exit\n");
printf("\nEnter num: ");
scanf("%d", &n);
switch (n)
{
case 1:
enter();
break;
case 2:
display();
break;
}
}
while (n != 0);
当我输入2 之后调用显示函数时scanf() 不接受任何输入并无限期地运行循环。
void display_d(){
point c1;
FILE *fptr;
fptr = fopen("company_det.txt","r");
while(fread(&c1,sizeof(point),1,fptr)){
printf("\n%s %s %d\n",c1.company_name,c1.bla.date,c1.bla.price);
}
fclose(stdin);
}
这是我的显示功能
【问题讨论】:
-
fflush(stdin);导致未定义的行为。见stackoverflow.com/questions/2979209/using-fflushstdin -
这看起来像 C。c++ 标签是否相关?
-
@yun 删除 fflush(stdin);还是有同样的问题
-
那么
display()函数一定包含无限循环?否则代码看起来很好。 -
无效显示(){点c1;文件 *fptr; fptr = fopen("company_det.txt", "r"); while (fread(&c1, sizeof(point), 1, fptr)) { printf("\n%s %s %d\n", c1.company_name, c1.bla.date, c1.bla.price); } fclose(stdin);} ///我的显示函数
标签: c switch-statement infinite-loop do-while