C语言 文件 I/O

  • Post category:C

C语言中的文件I/O操作可以完成文件的读写,常用的操作包括打开文件、读取文件数据和写入数据到文件。下面是一个完整的C语言文件I/O的使用攻略。

打开文件

在C语言中,可以使用函数fopen()来打开一个文件,函数原型如下:

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

其中,filename表示要打开的文件名,可以是绝对路径或相对路径;mode表示打开文件的模式,包括以下几种:

  • r:只读模式,打开一个已经存在的文件,文件指针指向文件开头。
  • w:只写模式,打开一个文件,如果该文件存在,则将其内容清空,如果文件不存在,则创建一个新的文件。
  • a:追加模式,打开一个文件,如果文件存在,则将文件指针指向文件结尾,如果文件不存在,则创建一个新的文件。
  • r+:读写模式,打开一个已经存在的文件,文件指针指向文件开头。
  • w+:读写模式,打开一个文件,如果该文件存在,则将其内容清空,如果文件不存在,则创建一个新的文件。
  • a+:读写模式,打开一个文件,如果文件存在,则将文件指针指向文件结尾,如果文件不存在,则创建一个新的文件。

打开文件成功后,函数fopen()会返回一个指向文件结构体的指针,失败时返回NULL。使用完打开的文件后,需要使用函数fclose()关闭文件。

int fclose(FILE *stream);

读取文件

在打开文件之后,可以使用函数fread()从文件中读取数据,函数原型如下:

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

其中,ptr表示读取的数据存放的缓冲区的地址;size表示每个数据项的大小;count表示需要读取的数据项个数;stream表示打开的文件指针。

如果读取成功,函数fread()会返回实际读取的数据项个数,失败时返回0。

下面是一个示例,从已经存在的文件中读取数据:

#include <stdio.h>

int main(int argc, char *argv[]) {
    FILE *fp;
    int buffer[10];
    int i;

    fp = fopen("data.txt", "r");
    if (fp == NULL) {
        perror("open file error");
        return -1;
    }

    fread(buffer, sizeof(int), 10, fp);

    for (i = 0; i < 10; i++) {
        printf("%d ", buffer[i]);
    }

    fclose(fp);

    return 0;
}

写入文件

在打开文件之后,可以使用函数fwrite()向文件中写入数据,函数原型如下:

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

其中,ptr表示要写入的数据的地址;size表示每个数据项的大小;count表示需要写入的数据项个数;stream表示打开的文件指针。

如果写入成功,函数fwrite()会返回实际写入的数据项个数,失败时返回0。

下面是一个示例,向文件中写入数据:

#include <stdio.h>

int main(int argc, char *argv[]) {
    FILE *fp;
    int buffer[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int i;

    fp = fopen("output.txt", "w");
    if (fp == NULL) {
        perror("open file error");
        return -1;
    }

    fwrite(buffer, sizeof(int), 10, fp);

    fclose(fp);

    return 0;
}

以上就是C语言文件I/O的使用攻略。