前提
CでWindowsで用意されているfindコマンドを作成したいと思っています
実現したいこと
・コマンドライン引数を使い、実行ファイル名 "検索文字列"対象ファイル名とした時にダブルクォーテーションで囲われているか判定をしたい
・argcが3→オプションなし書式でのチェック
・argcが4→オプションあり書式でのチェック
・上記以外はエラー
発生している問題
ダブルクォーテーションに囲われているかの判定が出来ない
該当のソースコード
if(argc == 3 && strchr(argv[], '"')){ }
試したこと
strcmpでの判定
『ダブルクォーテーションに囲われている』時、argv にどのように入っているかを理解しているでしょうか、
ダブルクォーテーションはシェル(cmd, PowerShell)によって解析され、そのコマンドには囲まれたものが一つの引数として渡されているので気にする必要はありません。
コマンドラインのオプションをパーズするとき、動作の詳細を指定するオプションはWindowsのコマンドプロンプト(cmd.exe)などでは伝統的に /V や /C など、頭にスラッシュ'/'が付いているか否かで判定します。UN*X系、gnuのコマンド等では '-'や '--'です。あとはコマンドによってオプションの並び、順番に依存します。既にいただいたコメントや回答も踏まえ、findコマンドの詳細を確認し、検討しましょう。
C>help find
ファイル (複数可) 内のテキスト文字列を検索します。
FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "文字列" [[ドライブ:][パス]ファイル名[...]]
/V 指定した文字列を含まない行をすべて表示します。
/C 指定した文字列を含む行の数だけを表示します。
/N 行番号を表示します。
/I 大文字と小文字の区別をしないで検索します。
/OFF[LINE] オフライン属性が設定されたファイルをスキップしません。
"文字列" 検索する文字列を指定します。
[ドライブ:][パス]ファイル名
検索するファイル (複数可) を指定します。
パスが指定されていないときは、プロンプトで入力されたテキストまた
は別のコマンドからパイプ処理で渡されたテキストを検索します。
C>
内容が追加されているからダブルポストではない...といえばそうかも知れないけど、なぜマルチポストが非推奨なのかを考えたときにはどうなんだろう。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14271679089
https://teratail.com/help#posted-otherservice
知恵袋でも複数の回答をいただいているから、以降はスルー。
まぁ、 getopt 使うのが妥当かと。