关于文件读取和写入的问题

hnd201031000407 2012-04-03 10:54:00
我想测试下一个登录的函数,如果初始文件不存在,就建立一个文件,把初始帐号密码写入。如果有文件就一直读取,知道帐号密码匹配,我的代码当帐号密码正确时能够成功,如果帐号密码不正确,它就一直在最后那里循环,跳不出来,可是那里我明明加了判断是否到文件尾的函数。代码如下
#include <stdlib.h>
#include <stdio.h>


struct login{
int account;
int password;
};



int main(){
long acc;
long pass;
FILE *fp;
login temp;
scanf("%ld",&acc);
scanf("%ld",&pass);
if((fp=fopen("login.dat","rb"))==NULL){
fclose(fp);
fp=fopen("login.dat","wb");
login super;
super.account=123456;//初始帐号
super.password=111;//初始密码
fwrite(&super,sizeof(login),1,fp);
fclose(fp);
fp=fopen("login.dat","rb");
}

fread(&temp,sizeof(login),1,fp);
while(temp.account!=acc||temp.password!=pass){
fread(&temp,sizeof(login),1,fp);
if(!feof(fp)){
printf("帐号或密码错误!");
return 0;
}
}
printf("登录成功");
return 1;
}
...全文
46 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hnd201031000407 2012-04-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

你写的是:如果文件还没结束就退出,如果已经结束了就继续循环......
[/Quote]

还真是。。。太久没写这函数了,回去一看定义真是这样,去掉个!就好了,汗。。。
jieleiping 2012-04-03
  • 打赏
  • 举报
回复
int feof(
FILE* stream
);
Parameters
stream
Pointer to FILE structure.
Return Values
The feof function returns a nonzero value after the first read operation that attempts to read past the end of the file.

It returns 0 if the current position is not end of file.

There is no error return.
muyi66 2012-04-03
  • 打赏
  • 举报
回复
你写的是:如果文件还没结束就退出,如果已经结束了就继续循环......

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧