Chinaunix
标题:
读文本,一次输出正确,二次输出为什么不一样,请高手修改?
[打印本页]
作者:
ycwcl
时间:
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();
}
}
作者:
unicorns
时间:
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)
作者:
ycwcl
时间:
2004-10-15 19:18
标题:
读文本,一次输出正确,二次输出为什么不一样,请高手修改?
请你帮助修改一下。
作者:
Yerk
时间:
2004-10-16 11:27
标题:
读文本,一次输出正确,二次输出为什么不一样,请高手修改?
好懒哦。
作者:
whpu000625
时间:
2004-10-16 17:01
标题:
读文本,一次输出正确,二次输出为什么不一样,请高手修改?
说得对,在用指针,特别是数组指针的时候,一定要记得分配内存空间,建议去看看林锐写的《高质量C/C++编程》
作者:
beginer1
时间:
2004-10-16 18:51
标题:
读文本,一次输出正确,二次输出为什么不一样,请高手修改?
仅供残考.
char ch[10][80];
另外我觉得i++在第一次执行循环是i没有自加,正确位置如下
else
{
ch
=menu_buff;
printf("%s",ch
);
}
i++;
作者:
yuxh
时间:
2004-10-18 08:24
标题:
读文本,一次输出正确,二次输出为什么不一样,请高手修改?
所有的ch
指向的是同一个menu_buff,而且最后fgets(menu_buff,80,fp)=NULL,所以menu_buff为空,所以最后输出的所有ch
也为空。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2