C语言代码实现文件复制 Linux环境
运行:1 编译文件2 运行编译出的文件H
--------------------------------------------------------------注释:
#include <stdio.h>
#include <strings.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
int main(int argc
,char *argv
[])
{
FILE
*t1
,*t2
;
t1
= fopen("t1.txt","r");
if (t1
== NULL)
{
printf("1.txt open fail info: %s\n",strerror(errno
));
}
t2
= fopen("t2.txt","w");
if (t2
== NULL)
{
printf("2.txt open fail info: %s\n",strerror(errno
));
}
int x
,y
;
char M
[100];
bzero
( M
,sizeof(M
));
while(!feof(t1
))
{
x
= ftell(t1
);
fread(M
,100,1,t1
);
y
= ftell(t1
);
fwrite(M
,y
-x
,1,t2
);
}
fclose(t1
);
fclose(t2
);
return 0;
}
运行:
1 编译文件
编译文件H.c 为 文件H,提前将文件t1.txt创建出来并输入内容。
2 运行编译出的文件H
--------------------------------------------------------------
注释:
if (t1
== NULL)
{
printf("1.txt open fail info: %s\n",strerror(errno
));
}
1:头文件errno.h中包含errno这个错误保存值,errno 是记录系统的最后一次错误代码。可以使用输出strerror(errno)的方法来输出当前程序的错误。 例如:此程序中删除t1.txt文件运行程序则:
2:头文件string.h中包含strerror()函数: 函数原型为:*char strerror(int errnum) 该函数返回一个指向错误字符串的指针,该错误字符串描述了错误 errnum。 3: x = ftell(t1); 函数ftell()函数原型:long ftell(FILE *stream);
x
= ftell(t1
);
fread(M
,100,1,t1
);
y
= ftell(t1
);
fwrite(M
,y
-x
,1,t2
);
本程序中使用两次ftell()函数来确定每次的读取字节数避免因为末尾时剩余字节过小导致空间浪费。