Я программирую программу на C, которая должна читать текстовые файлы разного размера и сохранять их в char *sending_data
.После этого он должен скопировать содержимое char *sending_data
в char *data
и напечатать мне размер *data
.
У меня уже есть код для чтения файла и сохранения его в char *sending_data
.Если я пытаюсь скопировать содержимое в другое char *
, я получаю malloc(): memory corruption error.
И если я пытаюсь напечатать размер sending_data
или data
, я получаю Memory access error.
char * readFile(char *path) {
FILE *fp;
char *data = NULL;
if ((fp = fopen(path, "rb")) == NULL) {
printf("Fehler!! / Datei konnte nicht gelesen werrden \n\n");
return data;
} else if (fseek(fp, 0, SEEK_END) != 0) {
fclose(fp);
} else {
long size = ftell(fp);
if (size > 0 && (data = (char *) malloc(size + 1)) != NULL) {
fseek(fp, 0, SEEK_SET);
if (fread(data, 1, size, fp) != (size_t) size) {
free(data);
data = NULL;
} else {
data[size] = '\0';
}
}
fclose(fp);
}
return data;
}
int main(int argc, char *argv[]) {
/*uint8_t */unsigned char *data;
int USER_SIZE = 8; // you can also use a macro
unsigned char *data;
char *sending_data;
sending_data =(char*)malloc ( USER_SIZE* sizeof (char));
sending_data =readFile("../PayloadFiles/ToDo.txt");
printf(sending_data);
printf(strlen(sending_data));
data = (char*)malloc( USER_SIZE * sizeof(char));
if(data)
strcpy((char*)data, sending_data);
printf(data_size);
printf(data);
}
Я ожидаю содержимое и размер файла, фактически скопированное содержимое файла в другом char *