こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

ファイル入出力で

現在ファイル入出力の項目をしているのですが、以下の内容で実行すると
エラーが出てどうしても実行できません。主にどこを直せばいいのでしょうか?
/* ファイルをコピーするプログラム */
#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の未定義です。
よろしくお願いします。

投稿日時 - 2006-10-27 23:29:22

QNo.2501692

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

> エラーメッセ-ジは
> 未定義のシンボルFILE(関数Main)
> 未定義のシンボルfin(関数Main)
> 未定義のシンボルfout(関数Main)
> ここでは宣言できない
> ここでは宣言できない
> 未定義のシンボルNULL
> と表示されました。

このエラーメッセージで間違いありませんか?
Main関数というのは存在しないはずですが...

何か別のファイルをコンパイルしようとしているとか、コンパイラが悪意を持って書き換えられているとか、(この通りのエラーメッセーが出力されたとすれば)尋常ではない状態に陥っていると思います。

投稿日時 - 2006-11-01 01:36:42

補足

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

投稿日時 - 2006-11-05 20:52:42

お礼

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


また一からやってみます。
ありがとうございました。

投稿日時 - 2006-11-15 20:19:15

ANo.3

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

投稿日時 - 2006-10-28 00:02:04

補足

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

投稿日時 - 2006-10-29 21:56:35

お礼

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


また一からやってみます。
ありがとうございました。

投稿日時 - 2006-11-15 20:18:52

ANo.2

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

投稿日時 - 2006-10-28 00:00:39

補足

回答ありがとうございました。遅くなり申し訳ありません。

OSはWindowsMeでコンパイルはborlandC++を使用し環境設定の要らないSetbcc.exeとBccDeveloperを使ってます。

よろしくお願いします。

投稿日時 - 2006-10-29 22:23:43

お礼

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


また一からやってみます。
ありがとうございました。

投稿日時 - 2006-11-15 20:18:12

ANo.1

そのまんま。
取り込んでるヘッダに「FILE」と「NULL」が#defineで定義されてない

って事なんだけど・・・・・NULLはどうとしてもなんでFILEが無いんだろうね。
C++で作っちゃっててとか そういうオチだったり?

投稿日時 - 2006-10-27 23:50:55

補足

回答ありがとうございます。遅くなり申し訳ありません。
#define でNULLとFILEを宣言してコンパイルしてみたのですが、やはりエラーメッセージがでました。
全文は
未定義のシンボルfin
未定義のシンボルfout
ここでは宣言できない
ここでは宣言できない
が表示されました 。

それでFILE *fin, *fout;をint型で言い換えるとコンパイルできるのですが。
FILE *fin, *fout;なしではいけないという事なんでしょうか?
C++でしてしまってるということはありえないです。

よろしければ回答お願いします。

投稿日時 - 2006-10-29 22:22:52

お礼

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


また一からやってみます。
ありがとうございました。

投稿日時 - 2006-11-15 20:17:18

あなたにオススメの質問