gpt4 book ai didi

c - 扫描卡住

转载 作者:太空宇宙 更新时间:2023-11-03 23:32:05 26 4
gpt4 key购买 nike

我是 C 语言的初学者。我在我的 C 程序中使用 scanf 函数,但它卡住了,只有在我键入 exit 时程序才会继续。我面临问题的代码部分是:

while(fread(&emr,recsize_emr,sizeof(emr)/recsize_emr,fp)==1)
{
if(emr.emr_id==emr_id)
{
printf("%s %s %s %d %d %s %s %f \n\n",emr.fname,emr.lname,emr.company_name,emr.emr_id,emr.agt_id,emr.pol_start_date,emr.pol_end_date,emr.amount);
printf("Enter New First Name, Last Name, Company Name, EmployerID, AgentID, Policy Start Date, Policy End Date, Amount : ");
scanf("%s %s %s %d %d %s %s %f \n",emr.fname,emr.lname,emr.company_name,&emr.emr_id,&emr.agt_id,emr.pol_start_date,emr.pol_end_date,&emr.amount);
fseek(fp,-recsize_emr,SEEK_CUR);
fwrite(&emr,recsize_emr,sizeof(emr)/recsize_emr,fp);
break;
}
}

最佳答案

scanf("%s %s %s %d %d %s %s %f \n");

决赛" \n"float 之后消耗所有空白已阅读。这意味着 scanf仅在 float 之后收到非空白字符后返回- 为了让该字符到达程序,您通常需要在其后输入一个换行符。

如果从格式字符串中删除最后的空格,

scanf("%s %s %s %d %d %s %s %f");

scanf读完 float 后立即返回.然后它将离开换行符 - 或者任何跟在 float 后面的字符。在输入缓冲区中的 input` 中,因此可能需要在进一步扫描之前清除输入缓冲区。

关于c - 扫描卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13199213/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com