C语言入门阶段09:C语言文件操作

        嗨喽,大家好,我是程序猿老王,程序猿老王就是我。
        今天给大家讲一讲C语言文件操作。

一、文件操作的由来

        文件操作的由来可以追溯到早期的计算机技术。在计算机的发展初期,由于计算机的存储容量非常有限,人们往往需要将计算机中的数据存储在外部设备中,以便于长期保存和管理。
        最初的外部存储设备是磁带和磁盘,它们提供了比计算机内部存储器更大的存储容量。人们很快意识到,对外部存储设备的读取和写入将成为计算机系统中的一项重要任务。因此,操作系统中加入了文件系统,实现了对外部存储设备的管理和控制。
        文件操作在计算机技术的发展中扮演着重要的角色,随着计算机存储容量的不断提高和数据交互需求的不断增加,文件操作技术也得到了不断发展和完善。在现代计算机系统中,文件操作已成为计算机系统中不可或缺的一部分。无论是在操作系统、数据库系统还是应用软件中,文件操作都占据着重要的地位,对于数据的存储、管理和交互都起到了重要的作用。

二、文件操作的用途

        在C语言中,文件操作是非常重要的一种数据处理方式。文件操作可以让我们在程序中读取和写入文件,对文件进行操作和管理,实现了程序和外部存储设备的数据交互。
具体来说,C语言中的文件操作可以帮助我们实现以下功能:

  • 数据持久化:程序可以将数据写入文件中,即使程序结束,数据也可以被保存在文件中,下次程序启动时可以再次读取数据。
  • 数据交互:程序可以读取和写入文件中的数据,实现与其他程序之间的数据交互。
  • 数据备份:程序可以将数据备份到文件中,以防数据丢失。
  • 数据分析:程序可以读取文件中的数据,并进行分析和处理。

        因此,文件操作是C语言中重要的一部分,也是C语言在实际应用中不可或缺的一种技术。无论是在开发应用程序还是在进行数据处理和管理方面,文件操作都具有非常重要的作用。

三、文件操作具体方式

        C语言文件操作主要涉及到文件的打开、读写、关闭等操作。下面将对C语言文件操作方式进行讲解并附上相应的示例代码。

文件打开(fopen)

文件操作开始前需要先打开文件,打开文件可以使用fopen函数,函数原型如下:

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

        其中filename为文件名,可以是绝对路径或相对路径;mode为文件打开的模式,如下表所示:

模式 描述
r 打开一个已有的文本文件,只允许读取
w 打开一个文本文件,只允许写入。如果文件不存在,则会创建一个新文件;如果文件已存在,则会清空文件内容
a 打开一个文本文件,允许在文件末尾追加写入。如果文件不存在,则会创建一个新文件
r+ 打开一个文本文件,允许在文件末尾追加写入。如果文件不存在,则会创建一个新文件
w+ 读写方式打开文件。如果文件不存在,则新建文件;如果文件已存在,则清空文件内容,可以对文件进行读写操作
a+ 读写方式打开文件。如果文件不存在,则新建文件;如果文件已存在,则在文件末尾追加内容,可以对文件进行读写操作
rb 打开一个已有的二进制文件,只允许读取
wb 打开一个二进制文件,只允许写入。如果文件不存在,则会创建一个新文件;如果文件已存在,则会清空文件内容
ab 打开一个二进制文件,允许在文件末尾追加写入。如果文件不存在,则会创建一个新文件

        打开文件成功后,会返回一个文件指针,可以用该指针对文件进行读写操作。如果打开文件失败,则会返回NULL。
        下面是一个文件打开的例子:

#include 

int main() {
    FILE *fp;
    char filename[] = "test.txt";
    char mode[] = "w";

    fp = fopen(filename, mode);
    if(fp == NULL) {
        printf("文件打开失败!\n");
        return 1;
    }
    printf("文件打开成功!\n");
    fclose(fp);
    return 0;
}

文件写入(fwrite)

        文件写入可以使用fwrite函数,函数原型如下:

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

各参数意思如下:

  • ptr:写入的数据的头指针,无符号类型
  • size:每个数据块的字节数
  • count:要写入的数据块的块数
  • stream:文件指针
  • 返回值:成功,则返回写入的数据块的块数,即count,如果不等于count,则表示失败

        下面是一个文件写入的例子:

#include 

int main() {
    FILE *fp;
    char filename[] = "test.txt";
    char mode[] = "w";
    char str[] = "Hello, World!";

    fp = fopen(filename, mode);
    if(fp == NULL) {
        printf("文件打开失败!\n");
        return 1;
    }

    fwrite(str, sizeof(str[0]), sizeof(str) / sizeof(str[0]), fp);
    fclose(fp);

    printf("文件写入成功!\n");
    return 0;
}

文件读取(fread)

        文件读取可以使用fread函数,函数原型如下:

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

各参数意思如下:

  • ptr:用于存储读取数据的缓冲区的指针
  • size:每个数据块的字节数
  • count:要读取的数据块的块数
  • stream:文件指针
  • 返回值:成功,则返回读取的数据块的块数,即count,如果不等于count,则表示失败

        下面是一个文件读取的例子:

#include 

int main() {
    FILE *fp;
    char filename[] = "test.txt";
    char mode[] = "r";
    char str[20];

    fp = fopen(filename, mode);
    if(fp == NULL) {
        printf("文件打开失败!\n");
        return 1;
    }

    fread(str, sizeof(str[0]), sizeof(str) / sizeof(str[0]), fp);
    printf("文件内容:%s\n", str);

    fclose(fp);

    printf("文件读取成功!\n");
    return 0;
}

文件关闭(fclose)

        文件操作完成后,需要使用fclose函数关闭文件,函数原型如下:

int fclose(FILE *stream);

其中stream是文件指针,函数返回值为0表示文件关闭成功,否则表示文件关闭失败。

        下面是一个文件关闭的例子:

#include 

int main() {
    FILE *fp;
    char filename[] = "test.txt";
    char mode[] = "w";
    char str[] = "Hello, World!";

    fp = fopen(filename, mode);
    if(fp == NULL) {
        printf("文件打开失败!\n");
        return 1;
    }

    fwrite(str, sizeof(str[0]), sizeof(str) / sizeof(str[0]), fp);
    fclose(fp);

    printf("文件写入成功!\n");
    return 0;
}

        本文介绍了C语言文件操作的相关知识和操作,包括文件打开、读写和关闭。通过学习这些知识,可以帮助读者更好地掌握C语言文件操作的相关技术。今天的内容就到这里了,谢谢大家的观看,我们下期再见!

---END---


        关于更多嵌入式C语言、FreeRTOS、RT-Thread、Linux应用编程、linux驱动等相关知识,关注公众号【嵌入式Linux知识共享】,后续精彩内容及时收看了解。

 

你可能感兴趣的:(C语言入门阶段,c语言,stm32,mcu,学习方法)