| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2000 人关注过本帖, 1 人收藏
标题:[原创]请教copy命令用C的编法
只看楼主 加入收藏
adn
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2004-5-19
收藏(1)
 问题点数:0 回复次数:4 
[原创]请教copy命令用C的编法

我用C编写了一个仿DOS下的COPY命令,但在复制后在新的文件最后总添加了“ij”的字符,这是为什么? 如我复制一个内容为“abcdefg”的文件,在新的文件中的内容为“abcdefgij”。

程序如下:名为cpy.c #include<stdio.h> main(int arv,char *arg[]) {FILE *in,*out; if(arv!=3) {printf("you lost a filename!\n"); exit(0);} if((in=fopen(arg[1],"r"))==NULL) {printf("cannot open the file!!"); exit(0);} out=fopen(arg[2],"w"); while(feof(in)==0) fputc(fgetc(in),out); printf("1 file copyed!"); fclose(in); fclose(out);}

将其编译为exe文件,, 格式如下:c:\>cpy a.txt b.txt

搜索更多相关主题的帖子: 命令 arg arv printf 
2004-05-19 18:50
kuangjingbo
Rank: 1
等 级:新手上路
帖 子:312
专家分:0
注 册:2004-4-24
收藏
得分:0 

试试我的

#include<stdio.h> void main(int arv,char *arg[]) { FILE *in,*out; char ch; if(arv!=3) { printf("you lost a filename!\n"); return; } if((in=fopen(arg[1],"r"))==NULL) { printf("cannot open the file!!"); return; } out=fopen(arg[2],"w"); while((ch=fgetc(in))!=EOF) fputc(ch,out); printf("1 file copyed!"); fclose(in); fclose(out); }

另外那个不是ij,是ÿ (按住ALT键,然后点击小键盘的255就可以产生了),可以用debug看出是0xff


永不放弃!
2004-05-19 22:50
adn
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2004-5-19
收藏
得分:0 

谢了,我回去试下

2004-05-20 00:12
adn
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2004-5-19
收藏
得分:0 
你这个程序就不会有多余的字母了,请问我是错在哪里?谢谢!!!
2004-05-20 17:59
bccnnc
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-4-16
收藏
得分:0 
fgetc成功时返回读到一个字节,本来应该是unsigned char型的,但由于函数原型中返回值是int型,所以这个字节要转换成int型再返回,那为什么要规定返回值是int型呢?因为出错或读到文件末尾时fgetc将返回EOF,即-1,保存在int型的返回值中是0xffffffff,如果读到字节0xff,由unsigned char型转换为int型是0x000000ff,只有规定返回值是int型才能把这两种情况区分开,如果规定返回值是unsigned char型,那么当返回值是0xff时无法区分到底是EOF还是字节0xff。
2012-04-16 12:50
快速回复:[原创]请教copy命令用C的编法
数据加载中...
 
   



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

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