| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 279 人关注过本帖
标题:文件的复制
只看楼主 加入收藏
C_596322153
Rank: 6Rank: 6
来 自:徽州
等 级:侠之大者
帖 子:182
专家分:466
注 册:2012-1-10
结帖率:100%
收藏
已结贴  问题点数:60 回复次数:3 
文件的复制
下面程序为啥不能复制first.txt文件的内容,first01.txt文件存在有内容:
程序代码:
#include"stdio.h"
#include"stdlib.h"
//#define LEN 40

int main()
{
  int i = 0,k =0,ch;
  FILE *in,*out;
  //char temp[LEN];
  //char name[10];


 
     if(in = fopen("first01.txt","r") ==NULL)
     {
         fprintf(stderr,"Usage: first01.txt filename\n");
         exit(1);
     }

     if(out = fopen("first.txt","w") == NULL)
     {
         fprintf(stderr,"Can't create output file.\n");
         exit(2);
     }
    
     while((ch = getc(in)) != EOF)
     {
       putc(ch,out);
     }
    

          //fgets(temp,8,in);
          //fputs(temp,out);
   
/************************
     if(i % 5 == 0)
      fputs("\n",out);
     else
      fputs(",",out);
************************/

  if(fclose(in) == 0 || fclose(out) == 0)
      fprintf(stderr,"Error in close file.\n");
  return 0;
    
}  

只创建了 first.txt 里面没内容
2012-10-05 18:39
w823352417
Rank: 3Rank: 3
来 自:甘肃兰州
等 级:论坛游侠
威 望:1
帖 子:43
专家分:113
注 册:2012-10-4
收藏
得分:40 
int i = 0,k =0,ch;//最好将ch定义成char型的

if(in = fopen("first01.txt","r") ==NULL)
//比较运算符运算优先级高于赋值运算符,这里是先进行fopen("first01.txt","r") ==NULL,然后把他的结果赋值给in
     {
         fprintf(stderr,"Usage: first01.txt filename\n");
         exit(1);
     }

     if(out = fopen("first.txt","w") == NULL)//同上
     {
         fprintf(stderr,"Can't create output file.\n");
         exit(2);
     }


fclose() 函数
如果流成功关闭,fclose 返回 0,否则返回EOF(-1)。 你的正好反了!
希望对你有帮助

在代码中享受乐趣
2012-10-05 19:15
w823352417
Rank: 3Rank: 3
来 自:甘肃兰州
等 级:论坛游侠
威 望:1
帖 子:43
专家分:113
注 册:2012-10-4
收藏
得分:0 
忘说一点,解决运算符问题,只需(in = fopen("first01.txt","r") ==NULL)加个括号就可以了

在代码中享受乐趣
2012-10-05 19:17
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:20 
fprintf(stderr,"Usage: first01.txt filename\n");
这里的出错处理有点混淆,文件名是固定的,所以使用方法并不是带参数的。这个问题不影响你的代码运行,不过按照代码本意应该是使用带参数的形式来运行。因此
int main(int argc, char *argv[])这样更加符合你的需求。

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2012-10-05 19:27
快速回复:文件的复制
数据加载中...
 
   



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

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