免费注册 查看新帖 |

Chinaunix

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

程序错在哪?(文件输出输出问题,初学者求助) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-07-18 20:18 |只看该作者 |倒序浏览
#include <stdio.h>;


main()
{
   FILE *fp1,*fp2,*fp3;
   char strings[1000],s1;
   char *p;
   
   if ((fp1=fopen("A.txt","r")==NULL) {
       printf("cannot open A.txt.\n";      
   }
  
   p=strings;
   
   while (!feof(fp1)) {            
            *p=fgetc(fp1);
            p++;
    }
    *p='\0';
    fclose(fp1);
    puts(strings);
}

A.txt内容如下:
I am cool guy!

屏幕输出内容如附件!

在TC下以及在UNIX都测试过,结果一样,
但是实在看不出代码有何错误,
不知道为何后面总是有一个特殊字符,
请大家指点!

err.JPG (4.91 KB, 下载次数: 24)

err.JPG

论坛徽章:
0
2 [报告]
发表于 2004-07-18 20:48 |只看该作者

程序错在哪?(文件输出输出问题,初学者求助)

是文件结束符,在斑竹置顶的帖子里有讨论的

论坛徽章:
0
3 [报告]
发表于 2004-07-18 21:01 |只看该作者

程序错在哪?(文件输出输出问题,初学者求助)

特殊字符就是EOF。看看精华,以前讨论过的。

论坛徽章:
0
4 [报告]
发表于 2004-07-18 21:22 |只看该作者

程序错在哪?(文件输出输出问题,初学者求助)

在下愚钝,还望进一步解释一下,
可是如果文件结束时,循环应该退出了,不应该
再把值赋给*p啊!
while (!feof(fp1)) {
*p=fgetc(fp1);
p++;
}

论坛徽章:
0
5 [报告]
发表于 2004-07-18 21:51 |只看该作者

程序错在哪?(文件输出输出问题,初学者求助)

研究精华贴,搞定了。
程序修改为:
ch=getc(fp1);
   while (ch!=EOF) {            
            *p=ch;            
            p++;
            ch=getc(fp1);
    }   
不过还是有点不明白,正在继续研究。

论坛徽章:
0
6 [报告]
发表于 2004-07-18 22:03 |只看该作者

程序错在哪?(文件输出输出问题,初学者求助)

我看了一下教材上也怎么用:
while(! feof(fp))
{ ... }

你换一种方法试一下呢.

while(*p != EOF)
{ ....}



我刚写出来你已经搞定了,看来有些多余了.
我也想知道为什么那样不行.
搞明白了 ,别忘了写出来分享一下阿!

论坛徽章:
0
7 [报告]
发表于 2004-07-18 22:10 |只看该作者

程序错在哪?(文件输出输出问题,初学者求助)

哈哈,终于研究明白了。FAQ的确是个好东西!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP