- 締切済み
C言語、fgetcを利用しファイルの内容を変数に
C言語について質問です C言語のfgetcを利用しファイルの内容を変数にいれてそれを返す関数を作っているのですがうまくいきません <!--以下ソース--> char *file_get_contents(char *filename){ FILE *fp; int c; char *return_str; if((fp=fopen(filename,"r"))==NULL) return NULL; while((c=fgetc(fp))!=EOF ){ sprintf(return_str,"%c",c); } fclose(fp); return return_str; } 誰か理由と改善方法を教えてください!
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- mk48a
- ベストアンサー率56% (1133/2007)
回答No.3
>char *return_str; これ、ポインタ宣言しているだけで、領域確保していないので、sprintf()の引数には使用できません。 あと、この手の質問をするときは何がうまくいかないかも書きましょう。 また、fgetc()の戻り値はintです。 char型としても使えますが、 >sprintf(return_str,"%c",c); が、文字列の領域を確保して、うまく動いたとしても追加ではなく上書きなので、最後の文字しか保持しません。 1文字だけ返したいのか、文字列を返したいのかで修正箇所は変わります。