りーまの日記

特に外向けに配信しているわけではないので読みにくいかもしれませんが参考になれば幸いです

コマンドライン引数

ここ3週間ほどずっとVisual Studio(以下VS) を利用したC言語コマンドライン引数を使ったファイルの開き方が分かりませんでした…

 

ここあさんに教えてもらいました

解説してもらったブログ

https://koron0902.ddns.net/index.php/2017/02/15/cmd-arg-vs/

 

ここにやり方が書いてあります

本当にありがとうございます

 

苦戦した理由の一番大きな勘違いは

・argc,argvがそのパソコン上では全てのプログラムで同一なものと思ってた事

 

今回苦戦した理由は4つあります

1.テキストファイルの意味がわかってなかった

  テキストファイルは何かのファイルとだけ思っていた

 

2.コマンドライン引数がわかってなかった

  引数なのでどこからか別の所からやってくる、そういうイメージがありましたが

  main関数の外側が一体何なのか…

 

3.そもそもファイルの開き方がわかってなかった

  ファイルをコマンドライン引数で開くと始めにargc,argvが出てくるが

  それに謎の疑問を抱いてしまった

 

4.VSのフォルダ分けがわかっていなかった

  ソースプログラムと同じフォルダに入れる、という記述を見てやってみようと

  思ったのですがVSのprojectファイルが複雑で混乱した

 

苦戦した理由の解決策

1.テキストファイルの意味がわかってなかった

  テキストファイルとは文字データだけのファイルの事であり

  「.txt」の拡張子を持つ物

  Wordは行間の幅など「書式設定」を含んでいるので文字だけのデータでありません

 

2.コマンドライン引数がわかってなかった

  コマンドライン引数は自分で設定するものではなくコンピュータが勝手に

  作ってくれるものだと勝手に思っていたので解釈が進みませんでした…

  さらにargc,argvがそのパソコン上では全てのプログラムで同一なものと

  思ってことも原因にあります。

  ここあさんに教えてもらい自分でいくつかプログラムを実行しようとした

  ときプログラムごとにコマンドライン引数の中身のファイルが違ったので

  気づきました…

 

3.そもそもファイルの開き方がわかってなかった

  ファイルをコマンドライン引数で開くと始めにargc,argvが出てくるが

  それに謎の疑問を抱いてしまった

  ↑

  これはどうやらコマンドライン引数を使ってファイルを開いたとき

  すべてのプログラムで現れます

 

4.VSのフォルダ分けがわかっていなかった

  ソースプログラムと同じフォルダに入れる、という記述を見てやってみようと

  思ったのですがVSのprojectファイルが複雑で混乱した

  ↑

  これもあれますが

  カレントディレクトリ、パスなどの言葉を忘れていたのも原因にあります

  VSの拡張子「.vcxproj」について勉強すると少しわかります

 

/*一応なぜコマンドラインの話になったかということと失敗した経緯*/

まず始まりは僕が使っている参考書「独習C」9章はファイルの取り扱いの章でした。コマンドライン引数については7章でチラッと出てきてVSの仕様をいろいろ調べたんですがあまり見たことない形式(main関数に引数がついているプログラム)だったし検索してもピンポイントにVSの記事が見つからず放っておいた(今思うと検索ワードがまずかった)のです。

すると9章でほぼすべてのプログラムがコマンドライン引数を使用してファイルを開いていたのでVSでどうにかする方法を探していました。

まず、写経して半角英数字で書かれたテキストファイルを開いてAが何文字含まれているか数えろというと所で既にわかりませんでした。

 

テキストファイルをただ「何かのファイル」とだけ思っていてそのファイルをどこに作るのかプログラムの中なのか外なのか、外だとしたらどこに作れば良いのかパソコンの中ならどこでもよいのか

 

テキストファイルがまずなんなのかを気にする前にいろいろな疑問が出てきてかつコマンドライン引数がわからないという状況で

 

・動画の説明を見ているときになぜメモ帳を開いたのかわからない

・他の人の参考記事を見てファイルを開くプログラムを実行したときにコマンドプロンプトの初めにargv,argvが出てくるのがそういうものだと認識できずずっと悩んでいた

 

などと今思うと本当に何やってるかわからない事をしていて、

コマンドライン引数について調べるためmain関数がどのように処理されるのかやパソコンの内部、カーネルやOSやシェルの分野の話を勉強し始める

・さらに物理メモリやハードディスクとしてのCPUの内部構造を勉強し始める

 

など違う方向ですべてを理解しようとしたのでかなり遠回りなことをしてしまいました…(いろいろわかったことが増えたので結果的には良かったです)

 

まとめ

ブログの書き方がわからなかったので読みにくいかもしれません。

本当に何をやってるかわかりませんがとりあえずVSでコマンドライン引数が使えるようになりました。

いろいろ語ったようですがこれでようやくファイル操作、コマンドライン引数が使えるスタート地点に立てたのでこれから何ができるか、どこまでできるかなどを学んでいきます

いろいろ遠回りしてすこしは予習もできたのでこの3週間を無駄にはしません