アプリ版:「スタンプのみでお礼する」機能のリリースについて

Cのfopenを使用する際、開くファイル名をプログラム中に書くのでなく、プログラム実行時にキーボードで打ち込んだ文字をファイル名とするプログラムの書き方を教えてください。

出来れば参考にしたいため、簡単なもので良いのでプログラムも書いていただけると、うれしいです。

よろしくお願いいたします。

A 回答 (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" ); とすればいいですね。
    • good
    • 0

{


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って・・・物凄い久しぶりに使ったな^^;
    • good
    • 0

//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 [作成したいファイル名]
でぉーけぃ!
    • good
    • 0

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



参考URL:http://nguyen.univ-tln.fr/Enseignement/C/cat.c
    • good
    • 0

char fname[256];



printf("ファイル名を入力してください\n");
gets(fname);


こんな感じでファイル名を入力すればできると思います。
当然入力したファイル名チェック等は必要ですよ。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!