欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C语言txt文件的复制(Linux环境 标准IO)

程序员文章站 2022-05-24 10:41:30
...

#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创建出来并输入内容。

C语言txt文件的复制(Linux环境 标准IO)

2 运行编译出的文件H

C语言txt文件的复制(Linux环境 标准IO)

--------------------------------------------------------------

注释:

if (t1 == NULL)
    {
        printf("1.txt open fail info: %s\n",strerror(errno));
    }

1:头文件errno.h中包含errno这个错误保存值,errno 是记录系统的最后一次错误代码。可以使用输出strerror(errno)的方法来输出当前程序的错误。
例如:此程序中删除t1.txt文件运行程序则:
C语言txt文件的复制(Linux环境 标准IO)

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()函数来确定每次的读取字节数避免因为末尾时剩余字节过小导致空间浪费。

相关标签: C语言 c语言