C言語でファイル読み込み後にファイル内容をreturnしたいのですが、意図通りとなりません。
mainからfile_readを呼び出してcontentsに内容を詰めています。
file_read中のcontentsの内容はファイル内容が設定されています。
mainに戻ってきたときにNULLとなっています。
どのように変更すればよいのでしょうか。
int file_read(char *input, char *contents) { // ファイルをオープン FILE *fp; errno_t err = fopen_s(&fp, input, "r"); if (err != 0) { printf("file open error."); return 1; } // サイズ取得 fseek(fp, 0, SEEK_END); size_t file_size = ftell(fp); fseek(fp, 0, SEEK_SET); // メモリ割り当て if ((contents = (char *)malloc(file_size)) == NULL) { printf("malloc error.\n"); fclose(fp); return 1; } // 読み込み char c; int i = 0; while ((c = fgetc(fp)) != EOF) { contents[i++] = c; } contents[i] = '\0'; // クローズ fclose(fp); } int main(void) { // ファイルを読み込みます。 char *contents = NULL; char input_path[] = "D:/work/test.txt"; file_read(input_path, contents); printf("%s", contents); // 終了処理 free(contents); return 0; }
回答3件
あなたの回答
tips
プレビュー