• ベストアンサー

fopenの使い方

Cのfopenを使用する際、開くファイル名をプログラム中に書くのでなく、プログラム実行時にキーボードで打ち込んだ文字をファイル名とするプログラムの書き方を教えてください。 出来れば参考にしたいため、簡単なもので良いのでプログラムも書いていただけると、うれしいです。 よろしくお願いいたします。

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

  • ベストアンサー
  • Interest
  • ベストアンサー率31% (207/659)
回答No.5

授業の宿題ではありませんよね? やり方は何通りかあると思いますが、コマンドプロンプト(やターミナル)から プログラム名 ファイル名 と入力してプログラムを実行する場合は、以下のようなスタイルで書くと、ソースコード中にファイル名を書かなくてもプログラム中で指定したファイルを操作できます。 ------------------------------------------------- #include <必要なヘッダファイル> int main(int argc, char **argv) { FILE *fp; /* 引数がなければ、バージョン番号、使い方を表示してプログラムを終了する。*/ if( 1 >= argc ){ バージョンを表示する(); 使い方を表示する(); } /* 引数をファイル名としてファイルを開く。 指定されたファイルが開けなければ、メッセージを表示して終了する。 */ fp = fopen( argv[1], "r"); if( NULL == fp ){ ファイルが開けないときのエラーメッセージを表示する(); return 0; } 以下、ファイルが開けたときの正常系の処理を進める。 fclose( fp ); /* 後始末を忘れずに。 */ return 0; } ------------------------------------------------- プログラムを実行中にファイル名を読み込むのであれば、char filename[N] を用意してここにファイル名をscanfで取り込み、fp = fopne( filename, "r" ); とすればいいですね。

その他の回答 (4)

  • bonyamk
  • ベストアンサー率29% (49/166)
回答No.4

{ char fname[256]; FILE *fp; printf("input filename:"); scanf("%s",fname); if((fp = fopen(fname,"r") == FALSE) { printf("cann't open.\n"); } //ここに処理 fclose(FH); } scanfって・・・物凄い久しぶりに使ったな^^;

  • ggaogg
  • ベストアンサー率43% (38/88)
回答No.3

//fopentest.c #include <stdio.h> int main(int argc, char *argv[]){ FILE *pFile; //end if no parameter// pFile = fopen(argv[1], "w"); if(pFile==NULL) return -1; fprintf(pFile, "作成されたファイルへ書き書き"); fclose(pFile); return 0; } あとはプロンプトで fopentest [作成したいファイル名] でぉーけぃ!

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.2

起動時引数を使って、fopen()するのが、一番手っ取り早いかと。

参考URL:
http://nguyen.univ-tln.fr/Enseignement/C/cat.c
  • cats1234
  • ベストアンサー率28% (103/356)
回答No.1

char fname[256]; printf("ファイル名を入力してください\n"); gets(fname); こんな感じでファイル名を入力すればできると思います。 当然入力したファイル名チェック等は必要ですよ。

関連するQ&A