Как исправить «ошибку доступа к памяти» в C при чтении файла и сохранить содержимое в данных char *? - PullRequest
0 голосов
/ 08 февраля 2019

РЕДАКТИРОВАТЬ: ПРОГРАММА РЕШЕНА.Я забыл char * readFile(char *path); в первой функции.

Я программирую в функциях C 2.Первая функция должна вызвать char *readFile во второй функции и сохранить содержимое в char *data.Вторая функция имеет метод, который называется char *readFile(char* path) и возвращает содержимое path.

. Я не знаю почему, но по какой-то причине я получаю memory access error.

Первая функция:

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


char * readFile(char *path);

char * data;
int userSetCONFIGFILE = 0;

int main(void) {

    if (!userSetCONFIGFILE) {
        printf("path nicht angeben \n\n");
        data = readFile("../../ToDo.txt");
    }



    if (data == NULL) {
        printf("Error \n\n");
        exit(-2);
    }

    printf("JSON string: %s \n", data); // return data
}

Вторая функция:

#include <unistd.h> //sleep & close
#include <stdlib.h>
#include <stdio.h>





char * readFile(char *path) {
    FILE *fp;
    char *dataReadFile = NULL;

    if ((fp = fopen(path, "rb")) == NULL) {
        printf("Fehler!! / Datei konnte nicht gelesen werrden \n\n");
        return dataReadFile;
    } else if (fseek(fp, 0, SEEK_END) != 0) {
        fclose(fp);
    } else {
        long size = ftell(fp);
        if (size > 0 && (dataReadFile = (char *) malloc(size + 1)) != NULL) {
            fseek(fp, 0, SEEK_SET);
            if (fread(dataReadFile, 1, size, fp) != (size_t) size) {
                free(dataReadFile);
                dataReadFile = NULL;
            } else {
                dataReadFile[size] = '\0';
            }
        }
        fclose(fp);
    }

    return dataReadFile;
}

Я исключен для работы с data в первой функции хорошо и распечатать ихиз.

Надеюсь, вы поможете мне.

...