メインパラメータを表示するコードを記述しましたが、コンパイルして「*」プログラムに入力すると、ファイル構造が表示されます。cmdのコマンドは次のようになります。program.exe 1 2 3 *
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char const* argv[]) {
for (int i=0; i<argc; i++) printf("%s\n", argv[i]);
return 0;
}
結果は次のとおりです。
program
1
2
3
program.c
program.exe
10-03-20
11-02-20
そして私の質問:プログラムがファイルをリストする代わりに「*」を印刷するように強制することは可能ですか?アドバイスありがとう
問題は、シェルによってに
—
PMGを
*
変換さ"file1 file2 ..."
れることです。Cプログラムに問題はありません(ただし、含める<stdlib.h>
必要はありません)。変換するには、シェルを防ぐためにスター:引用符を使用program.exe 1 2 3 "*"
助けてくれてありがとう
—
stasio14
質問とは関係ありませんが、厳密に
—
ランディン
char const* argv[]
は正しくありません。自分でmain()の形式を発明することはできません。コンパイラだけがそれを行うことができます。argv
多くの場合、書き込みは最善のアイデアではありませんが、実際には読み取り/書き込みメモリです。
Windows cmdシェルはワイルドカード拡張を実行しません。cmdシェルから実行されていないか、シェルが行う拡張をエミュレートするロジックをコンパイラが挿入しています
—
ikegami
*
シェルではなく、プログラム自体によって解釈されます。\*
または"*"
を使用して、*をプログラムに渡します。