こんにちは、最近C言語の入門書を読み とあるプログラムをつくったのですが、思ったようになりません。 そのプログラムは typ1 という名前でこのようになっています。
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *fin;
char buf[256];
char filename[80];
printf("入力ファイル名を指定してください=");
gets(filename);
fin = fopen("filename", "r");
if(fin == NULL)
{
printf("%sをオープンできません\n", filename);
exit(1);
}
while(fgets(buf, 256, fin) != NULL){
printf("%s", buf);
}
fclose(fin);
return 0;
}
となっており、プログラムを起動して指定したファイルを読み込んで、その内容を画面に出力するというものです。読み込み用ファイル(名前はsmp1)はメモ帳でつくっており、内容はアルファベットを一行目に、1から9の数字を二行目に書いて、アプリケーションのtyp1.exeがあるDebugというディレクトリと同じ場所に保存しております。
このプログラムはVisual Studio net 2003で作っおり エラー等はなく正常に動くのですが読み込むファイル(この場合smp1)を指定しても
入力ファイル名を指定してください=smp1.txt
smp1.txtをオープンできません。
Press any key to continue
となってしまいます。
読み込み用ファイルの場所が適切ではないのでしょうか? どなたか教えてください。
No.2ベストアンサー
- 回答日時:
No.1です。
どうもファイルの置く場所が問題なようです。
実行したときの作業ディレクトリは設定をしていなければ、デフォルトでvcpojファイルが置いてある場所のようです。
なのでexeの場所では、ファイルを見つけることできていないようです。すいませんでした。
なのでファイルをソースが置いてあるフォルダに置くか、もしくはフルパスで指定してください。
ちなみにフルパス指定だとC:\でなく、C:\\と\を2個記述してください。
ありがとうございました。ソースの置いてあるフォルダにファイルを移動してVC Net 2003 を起動してdebugしてみたところうまくいきました。
ちなみにフルパス指定はどこでやるのですか?
コマンドプロンプト画面だと C:\> となりBackspace押しても > が消えません。これだとC:\\のようにできないのですが、よろしければ教えてください。
No.3
- 回答日時:
gets関数は入力したものを読み込むものですのから、気にせずC:\~~~ファイル名と入力すればいいです。
消すとかそういう操作はいりません。No.1
- 回答日時:
> fin = fopen("filename", "r");
filenameは変数なので、""はいらないと思います。
これではfilenameというファイル名のファイルを開こうとしてしまいます。
fin = fopen(filename, "r");
ファイルのパスは省略してもexeと同ディレクトリであれば問題ないです。
この回答への補足
ご返事ありがとうございます。 早速言われた場所を
fin = fopen(filename, "r");
に直しました。。しかしあいかわらず
入力ファイル名を指定してください=smp1.txt
smp1.txtをオープンできません。
Press any key to continue
と表示されてしまいます。
他に何か問題があるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/06 13:01
- C言語・C++・C# #include <stdio.h>int main(void) { int buf[100] = 6 2022/11/01 22:45
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
どんなプログラムを書いても指...
-
フルパスから最後のディレクト...
-
「UNCパスはサポートされません...
-
GetPrivateProfileStringでini...
-
windows.hがincludeされない
-
ファイルやディレクトリの存在...
-
ExcelVBAでカレントディレクト...
-
マイクラでPythonのプログラミ...
-
セルに入力されたパスでフォル...
-
fopenで別ディレクトリにファイ...
-
ExcelVBA サーバーの(共有フォ...
-
ShellExecute、エクスプローラ...
-
webアプリケーションでの画像フ...
-
FTPでputすると空ファイルが出...
-
EXCELでダイアログボックスを開...
-
C言語を用いたファイルの一括削...
-
pythonでの日本語操作
-
新規作成ファイルパスが有効か...
-
絶対パスの絶対て英語で何でし...
-
VBAで自身のファイル名を取得す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フルパスから最後のディレクト...
-
FTPでputすると空ファイルが出...
-
どんなプログラムを書いても指...
-
ExcelVBAでカレントディレクト...
-
マイクラでPythonのプログラミ...
-
windows.hがincludeされない
-
「UNCパスはサポートされません...
-
ファイルやディレクトリの存在...
-
ネットワーク上のコンピュータ...
-
C言語を用いたファイルの一括削...
-
fopenで別ディレクトリにファイ...
-
GetPrivateProfileStringでini...
-
ExcelVBA サーバーの(共有フォ...
-
絶対パスの絶対て英語で何でし...
-
FTPでリモートのファイル一覧取得
-
webアプリケーションでの画像フ...
-
ファイルダイアログのカレント...
-
VBAで自身のファイル名を取得す...
-
AfxLoadLibrary関数で、DLLのハ...
-
Ubuntu テキストファイルをどこ...
おすすめ情報