C语言txt文件的复制(Linux环境 标准IO)
程序员文章站
2022-05-24 10:41:30
...
C语言代码实现文件复制 Linux环境
#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)); //初始化数组M 前n个字节为零且包括‘\0’
while(!feof(t1)) //判断t1文件是否读取完毕,
{
x = ftell(t1); //ftell返回值为
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); //ftell返回值为
fread(M,100,1,t1);
y = ftell(t1);
fwrite(M,y-x,1,t2);
本程序中使用两次ftell()函数来确定每次的读取字节数避免因为末尾时剩余字节过小导致空间浪费。