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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值