免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1007 | 回复: 6
打印 上一主题 下一主题

读文本,一次输出正确,二次输出为什么不一样,请高手修改? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-10-13 16:15 |只看该作者 |倒序浏览
读一个文本文件,第一次输出正确,第二次输出为什么不一样,请高高手给予修改?

文本名:bzb.txt
内容:
#币种
人民币
美元
港币
英磅
德国马克
c程序名:bzb.c
源码:
#include <stdio.h>;
main()
{
FILE *fp;
int i=0;
char *ch[80];
char buff[80];
char menu_buff[80];
if((fp=fopen("bzb.txt","r")==NULL)
{
printf("不能打开文件!";
exit(0);
}
i=0;
while(fgets(menu_buff,80,fp)!=NULL){
if(menu_buff=='#')
{
strncat(buff,menu_buff+1,80);
ch[0]=buff;
printf("%s",ch[0]);
}
else
{
ch=menu_buff;
printf("%s",ch);
i++;
}
}
fclose(fp);
for(i=0;i<5;i++)
{
printf("%s",ch);
getchar();
}
}

论坛徽章:
0
2 [报告]
发表于 2004-10-13 16:31 |只看该作者

读文本,一次输出正确,二次输出为什么不一样,请高手修改?

字符串数组char *ch[80];
没有给每个元素分配空间。

ch=menu_buff;
这样只是给指针赋值而已,每次循环赋给ch的都是menu_buff的首地址。

修改
1.用malloc给每个ch分配足够的空间或者干脆定义成二维数组
ch[m][n]
2.类似这种ch=menu_buff; 改成strcpy(ch,menu_buff)

论坛徽章:
0
3 [报告]
发表于 2004-10-15 19:18 |只看该作者

读文本,一次输出正确,二次输出为什么不一样,请高手修改?

请你帮助修改一下。

论坛徽章:
0
4 [报告]
发表于 2004-10-16 11:27 |只看该作者

读文本,一次输出正确,二次输出为什么不一样,请高手修改?

好懒哦。

论坛徽章:
0
5 [报告]
发表于 2004-10-16 17:01 |只看该作者

读文本,一次输出正确,二次输出为什么不一样,请高手修改?

说得对,在用指针,特别是数组指针的时候,一定要记得分配内存空间,建议去看看林锐写的《高质量C/C++编程》

论坛徽章:
0
6 [报告]
发表于 2004-10-16 18:51 |只看该作者

读文本,一次输出正确,二次输出为什么不一样,请高手修改?

仅供残考.
char ch[10][80];
另外我觉得i++在第一次执行循环是i没有自加,正确位置如下
else
{
ch=menu_buff;
printf("%s",ch);

}
i++;

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
7 [报告]
发表于 2004-10-18 08:24 |只看该作者

读文本,一次输出正确,二次输出为什么不一样,请高手修改?

所有的ch指向的是同一个menu_buff,而且最后fgets(menu_buff,80,fp)=NULL,所以menu_buff为空,所以最后输出的所有ch也为空。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP