2-9 库函数调用方式文件编程

本文介绍了C语言中库函数进行文件操作的基本概念和常用函数,包括文件指针、fopen函数打开文件、fclose函数关闭文件、fread和fwrite函数进行读写操作,以及fseek函数定位文件指针。通过示例代码展示了如何使用这些函数进行文件读写和复制操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(本节笔记的详细实验代码在这里

1.  基本概念

    1.1  ——C库函数

        独立于具体的操作系统,无论是在Linux、Windows或其他OS都能使用C库函数,提高了程序的移植性。

    1.2  ——流

        系统(程序)对文件(内存、网络连接或某个设备)进行数据的读写操作。

    1.3  ——文件指针

        类似于系统调用中的文件描述符FD,在库函数中使用FILE类型来表示一个打开的文件,这个类型中包含了管理文件流的信息,而指向该类型的指针 FILE* 则被称为文件指针。


2.  文件操作函数

    2.1  打开文件

        函数名:

                fopen

        函数原型:

                FILE *fopen(const char *path, const char *mode);

        函数功能:

                打开文件

        所属头文件:

                <stdio.h>

        返回值:

                成功:返回文件指针    失败:返回空指针

        参数说明:

                path:要打开的文件名(含路径),如:“/home/hello.c”

                mode:打开文件的方式,man fopen:

                        r        以制度方式打开

                        r+      以可读可写的方式打开(文件已存在)

                        w      清空文件或创建一个只写文件

                        w+    以可读可写方式打开,如果不存在则创建(文件不存在),如果文件存在,则打开并清空文件

        范例代码:

#include <stdio.h>

int main(int argc, char ** argv)

{

    FILE *fp;

    fp = fopen("/home/test.txt", "w+");

    return 0;

}


    2.2  关闭文件

        函数名:

                fclose

        函数原型:

                int fclose(FILE *fp);

        函数功能:

                关闭一个已打开的文件

        所属头文件:

                <stdio.h>

        返回值:

                成功:返回0    失败:返回EOF

        参数说明:

                fp:要关闭的文件指针

        范例代码:

..........

fclose(fp);

..........


    2.3  读文件

        函数名:

                fread

        函数原型:

                size_t fread ( void *ptr, size_t size, size_t nmemb, FILE, *stream);

        函数功能:

                从文件中读取数据

        所属头文件:

                <stdio.h>

        返回值:

                成功:返回读取到的数据字节数    失败:返回0

        参数说明:

                stream:指向要读取的文件

                ptr:指向读取出来的数据的保存位置

                nmemb:要读取的数据分块的块数

                size:每块数据的字节数

        范例代码:

#include <stdio.h>

int main(int argc, char ** argv)

{

    FILE *fp;

    fp = fopen("/home/test.c", "w+");

    char c_buf[15];

    fread(c_buf,1,10,fp);

    c_buf[10] = '\0';

    printf("now we read %s\n", c_buf);

    fclose(fp);

    return 0;

}


    2.4  写文件

        函数名:

                fwrite

        函数原型

                size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);

        函数功能:

                向一个已打开的文件写入数据

        所属头文件:

                <stdio.h>

        返回值:

                成功:返回写入文件的字节数    失败:返回0

        参数说明:

                stream:指向要写入数据的文件

                ptr:指向存放数据的位置

                nmemb:要写入的数据的块数

                size:每块数据字节数

        范例代码:

..........

char *c_buf = "9876543210";

..........

fwrite(c_buf, 5, 1,fp);

..........


    2.5  文件定位(文件读写指针)

        函数名:

                fseek

        函数原型:

                int fseek(FILE *stream, long offset, int whence);

        函数功能:

                重新定位文件的读写指针位置

        所属头文件

                <stdio.h>

        返回值:

                成功:返回0    失败:返回-1

        参数说明:

                stream:需要被重新定位的位置

                offset:指针的偏移量

                whence:文件指针从什么位置开始计数,取值如下:

                        SEEK_SET:从文件头开始偏移offset个字节;

                        SEEK_CUR:从当前位置开始偏移offset个字节;

                        SEEK_END:从文件尾开始偏移offset个字节

        范例代码:

..........

fseek ( fp, 8, SEEK_SET);

..........


3.  文件复制程序——基于C库

#include <stdio.h>


int main(int argc, char **argv)
{
    FILE *fp_s, *fp_t;
    int flag;
    char buf[512];

    fp_s = fopen(argv[1],"r+" );
    fp_t = fopen(argv[2], "w+");


    while((flag = fread(buf, 1, 512,fp_s)) >0 )
        fwrite(buf, 1,flag,fp_t);

    fclose(fp_s);
    fclose(fp_t);

    return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值