| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 966 人关注过本帖
标题:[求助]第二次循环判断语句就不起作用了?
只看楼主 加入收藏
球球
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:1146
专家分:265
注 册:2005-11-28
结帖率:100%
收藏
 问题点数:0 回复次数:5 
[求助]第二次循环判断语句就不起作用了?
各位C前辈,帮我看看这个自定义函数,在循环第二次时,if判断语句就不起作用了...是哪里不妥?
如果我第一次输入电话号码对了,我想再继续,可是在第二次输入电话号码时if就不起作用了.....
void augment()//定义函数,增加输入.
{
char ch;
if((fp=fopen("telefon.dat","rb"))==NULL)//以读的方式打开文件.
{
printf("\n");
printf("对不起,打开文件失败!\3\3请先创建文件『回车返回主菜单』:");
scanf("%c",&ch);
fflush(stdin);
return;//回车返回主函数.
}
fp=fopen("telefon.dat","ab");//以写的方式(追加,向二进制文件尾添加数据)打开文件.
for(;;)
{
system("cls");
printf("\n\t\t\t**********\3\3增加输入\3\3**********\n\n");
printf("新增用户姓名:\n");
scanf("%s",qhg.name);
fflush(stdin);
printf("\n");
printf("地址:\n");
scanf("%s",qhg.address);
fflush(stdin);
for(;;)
{
printf("\n电话号码(介于40000004999999之间):\n");
scanf("%d",&qhg.phone);
fflush(stdin);
if(qhg.phone>=4000000&&qhg.phone<=4999999)//对电话号码范围的判断.
{
fwrite(&qhg,sizeof(struct user),1,fp);
printf("\n增加输入成功!\2\2『按回车继续增加\3\3或输入n回到主菜单进行其它操作』:");
scanf("%c",&ch);
fflush(stdin);
if(ch=='n'||ch=='N')
{
fclose(fp);
return;//输入n到主函数.
}
else
{
fclose(fp);
break;//如果想继续增加,回车退出内循环,又从外循环开始.
}
}
else
{
printf("\n电话号码输入有误!『请回车重新填写\3\3或输入n回到主菜单』:");
scanf("%c",&ch);
fflush(stdin);
system("cls");
if(ch=='n'||ch=='N')
{
fclose(fp);
return;
}
}
}
}
}
搜索更多相关主题的帖子: 语句 判断 
2005-11-29 00:35
baidu
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:3811
专家分:0
注 册:2005-11-4
收藏
得分:0 
if((fp=fopen("telefon.dat","rb"))==NULL)//以读的方式打开文件.
{
printf("\n");
printf("对不起,打开文件失败!\3\3请先创建文件『回车返回主菜单』:");
scanf("%c",&ch);
fflush(stdin);
return;//回车返回主函数.
}
fp=fopen("telefon.dat","ab");//以写的方式(追加,向二进制文件尾添加数据)打开文件.
for(;;)

这两个fopen叫脱裤子放屁,多此一举!

偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2005-11-29 11:29
gree
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2005-11-2
收藏
得分:0 
1.else
{
fclose(fp);
break;//如果想继续增加,回车退出内循环,又从外循环开始.
}

你把fp流文件fclose掉了,继续增加电话号码的话好像就写不到telefon.dat中了,试试删掉fclose(fp)
2.对一个流文件应该是fopen与fclose成对出现的,你对telefon.dat连续两次fopen,很可能会导致错误

2005-11-29 11:49
球球
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:1146
专家分:265
注 册:2005-11-28
收藏
得分:0 
呵呵,谢谢提醒!我再改改.

好累
2005-11-29 13:19
球球
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:1146
专家分:265
注 册:2005-11-28
收藏
得分:0 
[QUOTE]if((fp=fopen("telefon.dat","rb"))==NULL)//以读的方式打开文件.
{
printf("\n");
printf("对不起,打开文件失败!\3\3请先创建文件『回车返回主菜单』:");
scanf("%c",&ch);
fflush(stdin);
return;//回车返回主函数.
}
fp=fopen("telefon.dat","ab");//以写的方式(追加,向二进制文件尾添加数据)打开文件.
for(;;)

这两个fopen叫脱裤子放屁,多此一举![/QUOTE]
这里是判断文件是否为空呀,是以读方式判断是否为空,以写的方式增加.

好累
2005-11-29 13:32
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
你再仔细想想,或者看看书上的例子。

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2005-11-29 14:04
快速回复:[求助]第二次循环判断语句就不起作用了?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014512 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved