• ベストアンサー

CでのCUIプログラミング 指定したファイルを生成する

Visual C++でのCUIプログラミングをしています。 コマンドラインで文字を入力してもらうとその名前のバイナリファイルが生成される様にしたいのですが、どのようにプログラムを作ればいいのでしょうか? 「aaaa」と入力すると「aaaa.bin」というバイナリファイルが生成されるというプログラムを考えています。バイナリファイル名を入力する際に拡張子の入力が必要であれば「aaaa.bin」と入力してもらう形になっても構いません。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

ユーザーからの入力には scanf または getsなどで取り込みます 文字列の中に 指定文字列があるか検査するにはstrstrを使います 大文字小文字変換は _strlwr 小文字大文字変換は _strupr 文字列の連結は strcatを使います ファイルI/Oは fopen、fputc、fcloseなどを使います  char buf[256];  FILE* fp;  gets( buf );  if ( strstr( _strlwr( buf ), ".bin") == NULL ) {   strcat( buf, ".bin" );  }  fp = fopen( buf, "wb" );  if ( fp != NULL ) {   // 出力処理   fclose( fp );  } といった具合でしょう ...

ikepan
質問者

お礼

ご返答ありがとうございます。 ファイルをオープンする時に指定した名前のファイルがない場合、自動で生成されるとは知りませんでした。そして関数の簡単な説明や大文字小文字を判定する細かい箇所までのソースを記述していただき、とても理解し易く勉強になりました。

その他の回答 (1)

  • yonfa
  • ベストアンサー率52% (22/42)
回答No.2

もしShell APIを使ってよいのでしたらPathRenameExtension()が便利かと思います。 #include "shlwapi.h" PathRenameExtension(fileName, ".bin"); 拡張子がなければ".bin"を付けてくれます。 すでに".bin"が付いていればそのままです。 別の拡張子が付いていた場合には".bin"に置き換えてくれます。 ただし、"a.txt"と入力されて"a.txt.bin"としたい場合は、 別途考慮が必要となります。

ikepan
質問者

お礼

ご返答ありがとうございます。 簡単な説明をしていただき、とても理解できました。

関連するQ&A