Я написал функцию, которая читает весь файл в строку, но не работает - PullRequest
1 голос
/ 28 мая 2020

Итак, мне нужно прочитать весь файл в строке в c, я не знаю, насколько большим будет файл. Я написал эту функцию, но она не работает:

int slurp(char * filepath, char * outputfile) {  
    fp = fopen(filepath, "r");
    int success = 0;
    if (fp == NULL) {
        success = 1;
    }
    if (success == 0) {
        fseek(fp, 0, SEEK_END);
        outputfile = (char *) calloc(ftell(fp) + 1, sizeof(char));
        fread(outputfile, ftell(fp), sizeof(char), fp);
        fseek(fp, 0, SEEK_SET);
        outputfile[ftell(fp)] = '\0';
    }
    return success;
}

Ошибка при открытии файла не возникает, но когда я распечатываю выходной файл, я получаю только (null).

Почему не это работает? Спасибо.

Я попробовал ваши предложения, но все равно не работает:

int slurp(char * filepath, char * outputfile) {
    fp = fopen(filepath, "r");
    int success = 0;
    if (fp == NULL) {
        success = 1;
    }
    if (success == 0) {
        fseek(fp, 0, SEEK_END);
        size_of_file = ftell(fp);
        fseek(fp, 0, SEEK_SET);
        outputfile = (char *) calloc(size_of_file + 1, sizeof(char));
        fread(outputfile, size_of_file, sizeof(char), fp);
        outputfile[size_of_file] = '\0';
    }
    return success;
}

1 Ответ

1 голос
/ 28 мая 2020

Перейти к началу перед чтением (в обратном порядке):

fseek(fp, 0, SEEK_SET);
fread(outputfile, ftell(fp), sizeof(char), fp);
...