• 締切済み

ファイル入出力で

現在ファイル入出力の項目をしているのですが、以下の内容で実行すると エラーが出てどうしても実行できません。主にどこを直せばいいのでしょうか? /* ファイルをコピーするプログラム */ #include <stdio.h> int main(void) { FILE *fin, *fout; char infile[40], outfile[40]; char str[256]; printf("コピー元ファイル = "); scanf("%39s", infile); printf("コピー先ファイル = "); scanf("%39s", outfile); if( (fin = fopen(infile, "r") ) == NULL) { printf("Input file open error.\n"); return 1; } if( (fout = fopen(outfile, "w") ) == NULL) { printf("Output file open error.\n"); fclose(fin); return 1; } while(fgets(str, sizeof(str), fin) != NULL) { fputs(str, fout); } fclose(fin); fclose(fout); return 0; } エラーは FILE 、fin, fout,NULLの未定義です。 よろしくお願いします。

みんなの回答

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.4

> エラーメッセ-ジは > 未定義のシンボルFILE(関数Main) > 未定義のシンボルfin(関数Main) > 未定義のシンボルfout(関数Main) > ここでは宣言できない > ここでは宣言できない > 未定義のシンボルNULL > と表示されました。 このエラーメッセージで間違いありませんか? Main関数というのは存在しないはずですが... 何か別のファイルをコンパイルしようとしているとか、コンパイラが悪意を持って書き換えられているとか、(この通りのエラーメッセーが出力されたとすれば)尋常ではない状態に陥っていると思います。

sheran
質問者

お礼

回答ありがとうございました。 その後やってみたのですが、やはりできませんでした。 また一からやってみます。 ありがとうございました。

sheran
質問者

補足

回答ありがとうございました。返事遅くなり申し訳ありませんでした。 その後一からやり直してみたのですが、コンパイル時点で外部シンボルWinmainが未解決と表示されるのですがこの表示の意味は何なのでしょうか? よろしければ回答お願いします。 ありがとうございました。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.3

ソースを見る限り、特に問題はなさそうです。 使用している処理系と、コンパイルオプション、エラーメッセージの全文を補足してください。

sheran
質問者

お礼

回答ありがとうございました。 その後やってみたのですが、やはりできませんでした。 また一からやってみます。 ありがとうございました。

sheran
質問者

補足

回答ありがとうございました。遅くなり申し訳ありません。 OSはWindowsMeです。コンパイルオプションは一応環境設定の要らないsetbcc.exeとBCCDeveloperを利用しています。あとborlandC++を使ってます。 エラーメッセ-ジは 未定義のシンボルFILE(関数Main) 未定義のシンボルfin(関数Main) 未定義のシンボルfout(関数Main) ここでは宣言できない ここでは宣言できない 未定義のシンボルNULL と表示されました。 ただFILE *fin, *fout;を他に言い換えるとコンパイラでき、実行結果が コピー元ファイル= 上記に入力すると同じく コピー先ファイル= の表示がされたんですが、 FILE *fin, *fout;がないのとでは結果どう影響するでしょうか? よろしくおねがいします。

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

提示されたソースをBCC32でコンパイルしてみました。正常にコンパイルできました。エラーはありません。使用されているコンパイラ及びOSを提示してください。

sheran
質問者

お礼

回答ありがとうございました。 その後やってみたのですが、やはりできませんでした。 また一からやってみます。 ありがとうございました。

sheran
質問者

補足

回答ありがとうございました。遅くなり申し訳ありません。 OSはWindowsMeでコンパイルはborlandC++を使用し環境設定の要らないSetbcc.exeとBccDeveloperを使ってます。 よろしくお願いします。

noname#39970
noname#39970
回答No.1

そのまんま。 取り込んでるヘッダに「FILE」と「NULL」が#defineで定義されてない って事なんだけど・・・・・NULLはどうとしてもなんでFILEが無いんだろうね。 C++で作っちゃっててとか そういうオチだったり?

sheran
質問者

お礼

回答ありがとうございました。 その後やってみたのですが、やはりできませんでした。 また一からやってみます。 ありがとうございました。

sheran
質問者

補足

回答ありがとうございます。遅くなり申し訳ありません。 #define でNULLとFILEを宣言してコンパイルしてみたのですが、やはりエラーメッセージがでました。 全文は 未定義のシンボルfin 未定義のシンボルfout ここでは宣言できない ここでは宣言できない が表示されました 。 それでFILE *fin, *fout;をint型で言い換えるとコンパイルできるのですが。 FILE *fin, *fout;なしではいけないという事なんでしょうか? C++でしてしまってるということはありえないです。 よろしければ回答お願いします。