| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1403 人关注过本帖
标题:谁能告诉我这是为什么?
只看楼主 加入收藏
devfhpgah
Rank: 1
来 自:江西
等 级:新手上路
帖 子:204
专家分:0
注 册:2007-8-16
收藏
 问题点数:0 回复次数:13 
谁能告诉我这是为什么?
为什么在“copyfile.txt"文件中会多出一个奇怪的字符,希望大家给予解答!
#include <stdio.h>
#include <stdlib.h>
int main()
{
  FILE *fp,fp1;
  int ch;
  if((fp=fopen("file.txt","r"))==NULL)
  {
     printf("Can't pen the file..");
     exit(EXIT_FAILURE);
  }
  if((fp1=fopen("copyfile.txt","w"))==NULL)
  {
     printf("Can't pen the file..");
     exit(EXIT_FAILURE);
  }
  while(!feof(fp))
  {
     ch=fgetc(fp);
     fputc(ch,fp1);
  }
  fclose(fp);
  fclose(fp1);
  system("pause");
  return 0;
}
搜索更多相关主题的帖子: file pen FAILURE txt 
2008-01-09 20:44
linsua
Rank: 1
等 级:新手上路
帖 子:275
专家分:0
注 册:2008-1-2
收藏
得分:0 
while(!feof(fp))
  {
     ch=fgetc(fp);
     if(!feof(fp))//先这么改吧
         fputc(ch,fp1);
  }

如果你对我的话感到再明白不过 那恐怕你是误解了我的意思
2008-01-09 20:51
devfhpgah
Rank: 1
来 自:江西
等 级:新手上路
帖 子:204
专家分:0
注 册:2007-8-16
收藏
得分:0 
能不能告诉我,这到底是为什么吗?
书上的好多例题都是像我那样的。

努力才会成功!
2008-01-09 20:53
linsua
Rank: 1
等 级:新手上路
帖 子:275
专家分:0
注 册:2008-1-2
收藏
得分:0 
while(!feof(fp))
  {
     ch=fgetc(fp);
     fputc(ch,fp1);
  }

在最后一次执行ch=fgetc(fp);的时候,ch实际上的值是不确定的,然后又执行了   fputc(ch,fp1);

如果你对我的话感到再明白不过 那恐怕你是误解了我的意思
2008-01-09 21:01
linsua
Rank: 1
等 级:新手上路
帖 子:275
专家分:0
注 册:2008-1-2
收藏
得分:0 
但是这时实际上已经到了eof了。

如果你对我的话感到再明白不过 那恐怕你是误解了我的意思
2008-01-09 21:02
xDevil
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2007-8-31
收藏
得分:0 
FILE *fp,fp1;
这里错了。
2008-01-09 21:17
devfhpgah
Rank: 1
来 自:江西
等 级:新手上路
帖 子:204
专家分:0
注 册:2007-8-16
收藏
得分:0 
哦,那里漏了,实际那里有*fp1的

努力才会成功!
2008-01-09 21:34
xDevil
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2007-8-31
收藏
得分:0 
当文件内的指针到达最后一个字符时,fgetc()读取了下一个字符,实际上不存在。所以要先判断fgetc()时是否已到达文件末。
2008-01-09 21:40
devfhpgah
Rank: 1
来 自:江西
等 级:新手上路
帖 子:204
专家分:0
注 册:2007-8-16
收藏
得分:0 
不是说,fgetc(fp)读取一个字符后,指针会指向前一个吗?如果读到了最后一个的话,fp文件指针应该移到了文件末尾了。再判断(!feof(fp))就应该为假了呀!

努力才会成功!
2008-01-09 21:46
linsua
Rank: 1
等 级:新手上路
帖 子:275
专家分:0
注 册:2008-1-2
收藏
得分:0 
原帖由 [bold][underline]devfhpgah[/underline][/bold] 于 2008-1-9 21:46 发表 [url=http://bbs.][/url]
不是说,fgetc(fp)读取一个字符后,指针会指向前一个吗?如果读到了最后一个的话,fp文件指针应该移到了文件末尾了。再判断(!feof(fp))就应该为假了呀! ...


不是的,
fp文件指针应该移到了文件末尾了
是不假,但是还没有去读这个,
末尾
的时候,eof标志不会被设置的

如果你对我的话感到再明白不过 那恐怕你是误解了我的意思
2008-01-09 21:53
快速回复:谁能告诉我这是为什么?
数据加载中...
 
   



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

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