Ich frage mich, warum, während ich denke, dass ich die Funktionsaufruf ordnungsgemäß laden, scheint es, dass fread kann nicht in meinem Stück Speicher richtig lesen und so erstellt einen Segmentierungsfehler [in Ladefunktion ]! Bitte zeigen Sie mir den richtigen AnsatzDateiinhalt in den Speicher übergeben ist fehlerhaft
der link zum Code ist
#include <math.h>
#include <signal.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
bool load(FILE* file, char** content, size_t* length);
int main()
{
// opens file
FILE * file = fopen("test.txt", "r");
// initialises variables
char* content;
size_t length;
// sending arguments to load function
bool receive = load(file, &content, &length);
// debugging content
printf("values of content: %s\n", content);
// debugs length
printf("values of content: %zu\n", length);
// closes file
fclose(file);
// for success
return 0;
}
bool load(FILE* file, char** content, size_t* length)
{
{
// proof checking for the existence of file
if (file == NULL)
{
return false;
}
// perusing to end of file
fseek(file, 0, SEEK_END);
// for approximation of size of file
size_t len = ftell(file);
// returns cursor to beginning of file
fseek(file, 0, SEEK_SET);
// apportions memory on heap for content of file
* content = (char *) malloc (len + 1);
// memory error checking
if(*content == NULL)
{
printf("It's unfortunate\n");
}
// to read into content
fread(* content, sizeof(char), len, file);
// null terminates content
(* content)[len] = 0;
// debugs content
printf(" content contains %s\n", * content);
// debugs length
* length = len;
printf(" length is %d\n", * length);
// if success
return true;
}
// if fail
return false;
}
Sie
Bitte post ein [Minimal, vollständige und überprüfbare Beispiel] (https://stackoverflow.com/help/mcve) direkt in die Frage statt Verbindung zu ihm. Während der Link Ihren Code enthält, wird er in der Zukunft möglicherweise veraltet sein. – litelite
obwohl ich sagen muss, dass dieser Link nett ist, eine echte IDE, wo ich den Code sehen und es debuggen kann etc. - Ich weiß, dass es verschwinden wird usw. Aber auch so ist Antworten sehr einfach – pm100
gut der offensichtlichste Fehler ist das Wenn 'load' false zurückgibt, mach einfach weiter. Und Sie überprüfen nie, ob fopen funktioniert entweder – pm100