如何读取文件并将内容保存在字符串中? (C语言,没有崩溃或核心转储错误)

问题描述 投票:0回答:1

我编写了一段代码来读取文件。读取默认文件或其他文件并将内容文件存储在字符串中。我不知道我哪里错了!当我运行它时,有时没问题,但有时会出现 Core Dump 错误!

这是我的代码:

#include <stdio.h>
#include <errno.h>
#include <unistd.h>
#include <string.h>

#define BUFFER_SIZE 1024
#define EXAMPLE_FILE "programing_languages.example"
#define EXAMPLE_FILE_SIZE strlen(EXAMPLE_FILE)+1


int read_file(char *buffer, char *file_name)
{
    FILE *file;

    file = fopen(file_name, "r");

    if (file == NULL)
    {
        printf("Warning!!!");
        return 1;
    }

    fread(buffer, sizeof(char), BUFFER_SIZE, file);

    fclose(file);

    return 0;
}


int main(int argc, char *argv[])
{   
    int opt;
    int file_name_customized = 0;
    char *file_name;

    while ((opt = getopt(argc, argv, "f:")) != -1) {
        switch (opt) {
            case 'f':
                snprintf(file_name, strlen(argv[2])+1, "%s", argv[2]);
                file_name_customized = 1;
                break;
            default:
                snprintf(file_name, EXAMPLE_FILE_SIZE, EXAMPLE_FILE);
        }
    }

    if (!file_name_customized)
    {
        snprintf(file_name, EXAMPLE_FILE_SIZE, EXAMPLE_FILE);
    }

    char buffer[BUFFER_SIZE] = {"\0"};

    if (read_file(buffer, EXAMPLE_FILE) == 1)
    {
        printf("Got Error To Open %s File!\n", file_name);
        return errno;
    }

    printf("%s\n", buffer);

}

我想读取一个文件并将其保存到一个字符串中。 (C语言)

c readfile
1个回答
0
投票

如何读取文件并将内容保存在字符串中?

  1. 打开文件。检查是否有错误。
  2. 通过
    fread()
    读取整个文件,并具有良好大小的缓冲区,例如 4K 并对返回的长度求和。
  3. 继续步骤 2,直到出现错误或未读取任何内容。
  4. 分配sum + 1。检查分配是否成功。
  5. 使用 1
    fread()
    将整个文件重新读入分配的缓冲区。 Nate 返回的长度。
  6. 关闭文件。
  7. 附加一个 空字符
  8. 如果长度符合预期,则成功,否则失败。
  9. 失败时返回分配的指针或 NULL。
© www.soinside.com 2019 - 2024. All rights reserved.