No.6ベストアンサー
- 回答日時:
コマンドで指定する入力ファイルと出力ファイルの順を自由にするということなら、コマンドラインを明確にする手法としては次のような仕様にする方法があります。
command -i input_file_name -o output_file_name
あるいは
command -o output_file_name -i input_file_name
とコマンドラインを書かせる。
この仕様なら、コマンドライン引数argvを順にみていって、例えばargv[1]が"-i"ならargv[2]には入力ファイル名が入っているし、argv[1]が"-o"ならargv[2]には出力ファイル名が入っている。そういうどちらの場合でも解釈できるコマンドラインオプションの解析をするプログラムを書くだけです。
Cではコマンドライン解析を簡単にする標準ライブラリはなかったと思うので、自作するか、適当なものをネットで見つけてください。
そういうのでなく、二つ並べた名前から一方は入力で一方は出力だと判断するのは、追加情報がなければ一般的に無理です。
No.5
- 回答日時:
補足によってようやく意図している事はわかった。
しかし、まだまだ仕様検討の段階で、コード化するのは早計ですね。
Aファイル、Bファイル、それぞれ存在するとき存在しないときにどうするか?
特に出力ファイルが既に存在する場合には、黙って上書きか?追記するのか?それともエラー扱いか?それともファイル名を派生させて新規作成するのか?
そもそも、出力ファイル名を入力させること自体が適切か?という考えもある。
何か規則に従ったファイルとして出力しなければならないのなら、その規則でロジック内で自動生成する方法もあるし、規則が明らかなら入力されたファイル名をチェックする事も可能。
何かの課題に単純に答えるだけじゃなくて、どうしたら効率的か?使いやすいか?事前にミスを防げるか?
そういう観点で仕様を詰めていければいいね。
回答者様のおっしゃるとおり、仕様が曖昧な状態でのコード化は早計でした。
仕様を詰めていって解決できました。
ご回答ありがとうございました。
No.4
- 回答日時:
2つ引数が与えられて、一方は入力ファイル名、一方は出力ファイル名、どっちが先に引数で渡されるか分からない、ということだから、入力ファイルは必ず存在しますよね。
で、出力ファイルは普通は存在しない(しれっと上書きしちゃうと困る)。
ということで、引数A、Bを渡されたら、それがファイルとして存在するかどうかチェックする。
http://www.tohoho-web.com/lng/199911/99110136.htm
A、B両方が存在したら、どっちが入力でどっちが出力かわからないのでエラー。
Aが存在してBが存在しなかったら、Aを入力にして、Bを出力に。
Bが存在してAが存在しなかったら、Bを入力にして、Aを出力に。
A、B両方が存在しなかったらエラー。
これでいいような気がします。
でも、もう一歩考えると、引数は入力ファイル1個でいいんじゃないかな。
存在しなかったらエラー。
存在したらそれを入力にして、出力ファイル名は「out_入力ファイル名」とかで決め打ち。
でも、ここまでのぼくの回答はC言語じゃなくて仕様の問題だな~
No.2
- 回答日時:
質問の意図が不明確。
>順番が替わっても大丈夫なように~~~
>どうしたら区別できますか。
というのはどういう事か?
正しい順番か?逆順か?という判断をするロジックは、既に存在するのか?それともそれを答えろと言うことか?
単にファイルを開くだけなら、順番は関係ない筈だが・・・・
何がどの様に困っているのかさっぱり理解できず。
何か補足してもらえないだろうか?
ご回答ありがとうございます。
すみません、私の説明不足でした。。
コマンドライン引数の順番が入れ替わっても、ちゃんとそれぞれ判別できるようにしたいのです。
実行モジュール A(出力ファイル) B(入力ファイル)
AとBが入れ替わっても、Aは出力用のファイルで、Bは入力用のファイルと判別したいです。
[-o]のようなオプションを付ければ判別できると聞いたのですが、どうコードを書いていいのかわかりません。。
No.1
- 回答日時:
えっと、引数を2個得て(それぞれA、Bとする)、ファイルAを開いて、ファイルBを開くのではダメですかね。
引数の個数はチェックせざるを得ないと思うんですけど。。
引数を渡す:
http://www.stackasterisk.jp/tech/program/c01_07. …
ファイルを読む:
http://www.stackasterisk.jp/tech/program/c01_08. …
たぶんこれが分からないんじゃないですよね?
ご回答ありがとうございます。
すみません、私の説明が足りませんでした。
コマンドライン引数の順番が入れ替わっても、ちゃんとそれぞれ判別できるようにしたいのです。
実行モジュール A(出力ファイル) B(入力ファイル)
AとBが入れ替わっても、Aは出力用のファイルで、Bは入力用のファイルと判別したいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語で 英文字のみからなる文字列、”Radar”、”WasItACatISaw”、”a”、””(空 5 2022/12/20 15:17
- C言語・C++・C# c言語 コマンドライン引数 4 2023/02/09 18:47
- C言語・C++・C# C言語について コマンドラインで >変数 12.00 (char型) と、小数点付きの値を共用体に渡 1 2022/04/22 16:56
- C言語・C++・C# C言語 共用体について コマンドライン引数で値を2つ入力したときに、argv[2]の値をUNI u1 4 2022/04/25 20:34
- UNIX・Linux テキストファイルをページ番号付きでコマンドラインから印刷したい 1 2023/02/22 12:47
- C言語・C++・C# c言語の問題です 2 2023/07/21 10:51
- その他(データベース) c言語の問題です。これを踏まえてコーディングしたいのでおしえていただきたいです。 3 2023/08/03 09:27
- C言語・C++・C# c言語 配列とポインタについて 3 2023/02/09 22:53
- CAD・DTP Autocad Scriptファイルからの入力とコマンドラインからの入力が違う 1 2023/08/01 09:13
- Excel(エクセル) 【VBA】PDF出力に任意のファイル名前を付ける方法 3 2023/07/21 10:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MS-Word で作成した表をLatexに...
-
コマンド(例えばls)の出力結果...
-
ファイル形式またはファイル拡...
-
ファイル出力の場所を指定
-
VBSでEXCEL⇒CSV変換で日付の書...
-
C言語での印刷方法
-
pcap形式データをテキストへ抽出
-
外国語とCSVについて
-
CBool関数について VB6とVB.net...
-
コンソールの出力をパイプでダ...
-
音を出すプログラム
-
pLaTeX の EPSファイル読み込み...
-
シェルコマンドの 2>&1 とはど...
-
エクセルVBA→シート名でCSV出力...
-
C言語でBMP画像(ファイル)は...
-
fortranのtxtファイル出力書式...
-
サウンド出力のデバイスを選択...
-
printfだと出力されるのにfprin...
-
絶対パスをクリップボードへコピー
-
SPSSで変数リストをエクセル用...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンド(例えばls)の出力結果...
-
VC++でUTF-8のファイルを出力し...
-
Acccess レポートをグループ別...
-
ファイル出力の場所を指定
-
ファイル形式またはファイル拡...
-
シェルコマンドの 2>&1 とはど...
-
Wordマクロで指定したフォルダ...
-
テキストファイルに改行コード...
-
fwprintf()について
-
外国語とCSVについて
-
二次元配列をクリップボードに...
-
ファイルの文字コードをUTF-8に...
-
csvファイルでの出力について
-
C言語での印刷方法
-
フォルダにあるPDF情報の抽出(VBA)
-
(VBA)書式が変更されてしまい...
-
C言語での縦方向のファイル出力...
-
CSVファイルを任意の場所に出力...
-
標準出力とファイルに効率的に...
-
CreateProcess関数と実行後の戻...
おすすめ情報