ZERO246 2021-07-20 02:10 采纳率: 100%
浏览 497
已结题

while(!feof(fp))不进入循环,读不出文件

img
int signin()
{
int flag = 1;
char name[20];
char password[20];
printf("请输入账号:>\n");
scanf("%s", name);
printf("请输入密码:>\n");
scanf("%s", password);
FILE * fp;//创建文件指针
struct Account account;
if ((fp = fopen("account.text","r+")) == NULL)
{
printf("登陆失败!账号不存在!\n");
return 0;
}
fread(&account, sizeof(account), 1, fp);//从fp中读取数据到结构体中
while (!feof(fp)) //文件遍历
{
if (!strcmp(account.name, name) && !strcmp(account.password, password))
{
flag = 0;//登陆成功返回0
strcpy(signname, account.name);//记录当前登陆账号
strcpy(signpassword, account.password);
fclose(fp);
return(flag);
}
fread(&account, sizeof(account), 1, fp);//从fp中读取数据到结构体中
}
fclose(fp);
return(flag);
}

stuff.text文件中的内容为

img

结果:
img
调试了一下发现while直接就没进去,问题到底出在哪呀?

  • 写回答

3条回答 默认 最新

  • CSDN专家-Time 2021-07-20 03:15
    关注

    feof是C语言标准库函数,其原型在stdio.h中,其功能是检测流上的文件结束符,如果文件结束,则返回非0值,否则返回0(即,文件结束:返回非0值,文件未结束,返回0值)
    已经遇到结尾,所以while循环不执行。
    不妨使用fscanf去获取文件中的数据。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月15日
  • 已采纳回答 8月7日
  • 创建了问题 7月20日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度