私は関数呼び出しを適切に行うために関数を呼び出すと思うのですが、 freadはメモリのチャンクに正しく読み込むことができないため、セグメンテーションフォルトが生成されます]!正しいアプローチに私を指すくださいファイルの内容をメモリに渡すことに問題がある
コードへlinkは
#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;
}
は、ファイルを開いていることを確認する必要がありますあなたに
[Minimal、Complete、and Verifiable example](https://stackoverflow.com/help/mcve)をそれにリンクしています。リンクにはコードが含まれていますが、将来的には古くなる可能性があります。 – litelite
しかし、私はこのリンクが素敵だと言わざるを得ないが、コードを見てデバッグすることができる本当のIDEだ - 私はそれが消えてしまうことは知っているが、それでも非常に簡単に答えることができると思うよ – pm100
'load'がfalseを返す場合、あなたは単に続行します。そして、fopenがうまく働いているかどうかは決して確認しないでください。 – pm100