如何将文本文件数据分配给变量

时间:2015-02-23 15:17:11

标签: c readfile

我正在尝试从文本文件中读取并将其分配给变量。目前我在从文件中读取并打印出来的阶段,但是我还没想出如何将结果分配给变量。

这是我的代码:

int c;
FILE *file;
file = fopen(inputFilename, "r");
if (file) {
    while ((c = getc(file)) != EOF) {
        putchar(c);
    }
    fclose(file);
}

我不完全确定putchar(c)的意思,但我认为它只是一次打印出一个字符?

我将如何努力实现我的目标?

1 个答案:

答案 0 :(得分:2)

你的意思是获取整个文件内容,这很容易就这样做了

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

char *readFileContent(const char *const filename)
{
    size_t size;
    FILE  *file;
    char  *data;

    file = fopen(filename, "r");
    if (file == NULL)
    {
        perror("fopen()\n");
        return NULL;
    }

    /* get the file size by seeking to the end and getting the position */
    fseek(file, 0L, SEEK_END);
    size = ftell(file);
    /* reset the file position to the begining. */
    rewind(file);

    /* allocate space to hold the file content */
    data = malloc(1 + size);
    if (data == NULL)
    {
        perror("malloc()\n");
        fclose(file);
        return NULL;
    }
    /* nul terminate the content to make it a valid string */
    data[size] = '\0';
    /* attempt to read all the data */
    if (fread(data, 1, size, file) != size)
    {
        perror("fread()\n");

        free(data);
        fclose(file);

        return NULL;
    }
    fclose(file);
    return data;
}

int main()
{
    char *content;

    content = readFileContent(inputFilename);
    if (content != NULL)
    {
        printf("%s\n", content);
        free(content);
    }
    reutrn 0;
}

并且在文件大小超过可用RAM的极少数情况下,这当然会失败,但它不会导致无法解决的行为,因为这种情况被视为malloc()失败。