OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

ファイル入力のエラー

  • すぐに回答を!
  • 質問No.183059
  • 閲覧数48
  • ありがとう数1
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 50% (3/6)

以下のファイルを配列に読み込むプログラムを作っています。

1987 1100 12 23 2.467164 0.75153
1989 1202 12 31 2.456249 0.72896
1990 1204 9 28 2.484802 0.763903
1991 1206 11 26 2.520005 0.750182
1985 1207 9 26 2.499319 0.749116
以下の通りプログラムを組んでみました。
コンパイルしたところ、出力はされませんでした。
エラーも出ていないので、入力、出力などどこが悪いのかわかりません。
ほとんど初心者です。間違いが分かる方、よろしくお願いします。
#include<stdio.h>
#define SIZE 5
main()
{ int a, b, c, d, i;
static int year[SIZE],month[SIZE],day[SIZE],code[SIZE];
  double e, f;
static double latitude[SIZE],longitude[SIZE];
FILE *fp;

fp=fopen("c\distance.dat","r");
while((fscanf(fp,"%d%d%d%d%lf%lf",&a,&b,&c,&d,&e,&f)) !=EOF)
{ year[i]=a;
month[i]=b;
day[i]=c;
code[i]=d;
latitude[i]=e;
longitude[i]=f;
i++;

printf("%13d%8d%8d%8d%9.6lf%9.6lf\n",&a,&b,&c,&d,&e,&f);
}

fclose(fp);
return(0);
}
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.4
レベル12

ベストアンサー率 45% (210/459)

こんにちは。itohhといいます。

環境は、Windowsでよろしいんですよね?(Windowsと解釈して解説します。)

一応、確認したいのですが。
file.exeは、どのようにして動かしていますか?
エクスプローラからダブルクリックで動かしていませんよね?(^_^;

DOS窓(コマンドプロンプト)でfile.exeがあるディレクトリに移動して実行していますよね?

>fp=fopen("c\\distance.dat","r");
>if(fp==NULL){
>printf("open error\n");
>return(1);
>}
それから、e101treさんのアドバイスにあるようにdistance.datは、どこにあるのでしょうか?
(A)Cドライブ直下にあるのなら「c:\\distance.dat」
(B)file.exeがあるディレクトリの下にあるのなら「c\\distance.dat」
補足に載っているソースでは(B)になっていますが、OKですか?

ファイルのオープンに失敗したのなら、printf文で出力している「open error」は出力されていますか?

デバッグする環境が無い場合、(Visual C++のデバッガーなど)
どこまで、動いたかを確認するためにprintf文を入れてみましょう。

例。(ファイルのオープンの前に入れてみる場合)

#ifdef _DEBUG
printf("<<DEBUG FileOpen>>\n");
#endif

fp=fopen("c\\distance.dat","r");
if(fp==NULL){
printf("open error\n");
return(1);
}

#VC++の場合です。「_DEBUGのifブロック」は、デバッグバージョンのexeファイルを作ると
コンパイルされるコードになり、リリースバージョンのexeファイルを作るとコメントとして
扱われます。
お礼コメント
kingyobachi

お礼率 50% (3/6)

ご丁寧にありがとうございました。

エクスプローラから、ダブルクリックしていました(^^;;

無事解決することができました。
未熟な私に回答をしてくださった方々、本当にありがとうございます。
投稿日時 - 2001-12-11 16:48:21
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.1
レベル9

ベストアンサー率 43% (27/62)

コンパイルしただけで実行してないなんてことは無いですよね? 気づく点といえば、iを初期化していないことでしょうか。 このままですと、iがでたらめな数字になっていて、それでもプログラムは実行してしまいますから、 実行プログラム自体を書き換えたりします。 何も表示されないのかプログラムが動いてないのか判断するには、 printf に間違いなく表示される文字列(%を使わない)を入れてみると良いです ...続きを読む
コンパイルしただけで実行してないなんてことは無いですよね?
気づく点といえば、iを初期化していないことでしょうか。
このままですと、iがでたらめな数字になっていて、それでもプログラムは実行してしまいますから、
実行プログラム自体を書き換えたりします。

何も表示されないのかプログラムが動いてないのか判断するには、
printf に間違いなく表示される文字列(%を使わない)を入れてみると良いですよ。
  • 回答No.2
レベル12

ベストアンサー率 45% (210/459)

こんにちは。itohhといいます。 なにも出力されないのは、 > printf("%13d%8d%8d%8d%9.6lf%9.6lf\n",&a,&b,&c,&d,&e,&f); の、「&a,&b,&c,&d,&e,&f」が間違っているからではないでしょうか? 「a,b,c,d, ...続きを読む
こんにちは。itohhといいます。

なにも出力されないのは、
> printf("%13d%8d%8d%8d%9.6lf%9.6lf\n",&a,&b,&c,&d,&e,&f);
の、「&a,&b,&c,&d,&e,&f」が間違っているからではないでしょうか?
「a,b,c,d,e,f」が正解だと思いますよ。(ヘルプで確認してみましょう!)

あと、他の方が回答しているように変数は初期化を必ず行いましょう。
例。int i=0;

頑張ってください。(^_^;
  • 回答No.3
レベル7

ベストアンサー率 38% (7/18)

fopen() が成功しているかチェックしてみてはいかかでしょう? fp=fopen("c\distance.dat","r"); if (fp == NULL) { printf("open error.\n"); return (1); } 多分、ここでエラーが起こっているのだと思います。 ファイル名が間違って ...続きを読む
fopen() が成功しているかチェックしてみてはいかかでしょう?

fp=fopen("c\distance.dat","r");
if (fp == NULL) {
printf("open error.\n");
return (1);
}

多分、ここでエラーが起こっているのだと思います。
ファイル名が間違ってませんか。

"C\\distance.dat" (Cフォルダの下のdistance.datファイル)
 か、
"C:\\distance.dat" (Cドライブ直下のdistance.datファイル)
かのどちらかだと思います。
補足コメント
kingyobachi

お礼率 50% (3/6)

早々のお答えありがとうございます。
みなさんの意見を総合して以下のように変更しました。
#include<stdio.h>
main()
{
  int a, b, c, d;
static int year[10],month[10],day[10],code[10];
double e, f;
static double latitude[10],longitude[10];
FILE *fp;

int i=0;

fp=fopen("c\\distance.dat","r");
if(fp==NULL){
printf("open error\n");
return(1);
}
while((fscanf(fp,"%d%d%d%d%lf%lf",&a,&b,&c,&d,&e,&f)) !=EOF)
{ year[i]=a;
month[i]=b;
day[i]=c;
code[i]=d;
latitude[i]=e;
longitude[i]=f;
i++;

printf("%13d%8d%8d%8d%9.6lf%9.6lf\n",a,b,c,d,e,f);
}

fclose(fp);
return(0);
}
しかし、これでfile.exeというファイルができるのですが、何も表示されません。ファイルがオープンできていないということでしょうか?
投稿日時 - 2001-12-11 15:05:33
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ