- ベストアンサー
コンパイルエラーの原因がわからず困っています。
- コンパイルエラーの原因がわからず困っています。プログラムをコンパイルする際に22行目で互換性のない型の代入が発生していることがエラーメッセージに表示されています。
- このエラーは、22行目で行われている代入操作において、異なる型のデータを互換性のない方法で代入しようとしていることが原因です。
- 解決策としては、22行目での代入操作の型の整合性を確認し、必要に応じて適切な修正を行う必要があります。具体的な修正方法はプログラムの詳細に依存しますが、適切なデータ型を使用することや、代入操作を適切な方法で行うことが考えられます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
変数定義に char *pbuf; を追加して、22行目を 22 while((pbuf = fgets(str,1024,fp)) == EOF){ に変更してください。 strはバッファの配列割り当てなのでfgets()の戻り値を受け取ることは出来ません。 上記の修正でコンパイルは通ると思いますが、"== EOF" は "!= NULL" ではないのかなぁ。
その他の回答 (2)
- asuncion
- ベストアンサー率33% (2127/6289)
> 22 while((str = fgets(str,1024,fp)) == EOF){ while(fgets(str,1024,fp) != NULL){ それから、fopen()の戻り値を必ず検査すべきです。 今のコードは、ファイルのオープンに失敗したときに 何も手を施していないため、問題があります。
- don_go
- ベストアンサー率31% (336/1059)
> 22 while((str = fgets(str,1024,fp)) == EOF){ fgets関数 http://homepage1.nifty.com/MADIA/vc/C/c_lang_ansi19.htm --------------------------------------------- #include <stdio.h> void main(void) { char moji[100]; FILE *fp; //ファイルポインタ if((fp=fopen("C:\\windows\\デスクトップ\\work.txt","r"))==NULL) printf("ファイルを開けません。\n"); else { if ((int)fgets(moji,100,fp)!=EOF) printf("文字列は\n%sです。\n",moji); else printf("ファイルの文字列取得失敗\n"); fclose(fp); } getchar(); } ---------------------------------------------