调用显示函数后循环 运行 无限时间
loop running infinite time after calling display function
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);
}
这是我的展示功能
函数 display_d()
关闭 stdin
。当函数 returns 时,scanf
将尝试使用 stdin
读取另一个数字。这是未定义的行为 (see answers here)。
您可能打算关闭文件而不是 stdin
。
此外,应检查 fopen
的 return 值。如果 fopen
打开文件失败,它将是 NULL
。
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);
}
这是我的展示功能
函数 display_d()
关闭 stdin
。当函数 returns 时,scanf
将尝试使用 stdin
读取另一个数字。这是未定义的行为 (see answers here)。
您可能打算关闭文件而不是 stdin
。
此外,应检查 fopen
的 return 值。如果 fopen
打开文件失败,它将是 NULL
。