📜  c 将文件读入字符串 - C 编程语言(1)

📅  最后修改于: 2023-12-03 14:39:41.668000             🧑  作者: Mango

以'C'将文件读入字符串

在C语言中,我们可以使用fopen函数打开一个文件。我们可以使用fgets函数从文件中读取一行(或指定长度)字符,或者我们可以使用fread函数从文件中读取指定长度的字符块。

为了从文件中读取整个文件到字符串中,我们需要使用fread函数。以下是一个实现此操作的示例程序:

#include <stdio.h>
#include <stdlib.h>

int main() {
    FILE *fp;
    long lSize;
    char *buffer;

    fp = fopen("file.txt", "rb");
    if (!fp) perror("file.txt"), exit(1);

    fseek(fp, 0L, SEEK_END);
    lSize = ftell(fp);
    rewind(fp);

    /* allocate memory for entire content */
    buffer = calloc(1, lSize + 1);
    if (!buffer) fclose(fp), fputs("memory alloc fails", stderr), exit(1);

    /* copy the file into the buffer */
    if (1 != fread(buffer, lSize, 1, fp)) fclose(fp), free(buffer), fputs("entire read fails", stderr), exit(1);

    /* do your work here, buffer is a string contains the whole text */
    printf("%s", buffer);

    fclose(fp);
    free(buffer);
    return 0;
}

首先,我们打开文件并检查打开是否成功。然后我们计算并记录文件大小。我们使用calloc函数为整个文件内容分配内存,并使用fread将文件读取到内存中。最后,我们可以关闭文件和释放内存。

注意,在这个例子中,我们使用"rb"选项打开文件。这允许我们将二进制文件读取到内存中。如果我们打开文本文件,请使用"r"选项。

总结

在C语言中,使用fread函数可以将文件读取到内存中的缓冲区中,然后我们可以像处理普通字符串一样处理它。在处理大文件时,我们可以逐块读取并处理文件,同时避免将整个文件读取到内存中。