Microsoft 固有の仕様 →
Microsoft C のスタートアップ コードはオペレーティング システムのコマンド ラインで指定した引数を解釈するときは次の規則を使用して :
引数は、空白 (スペースまたはタブ) で区切ります。
二重引用符で囲んだ文字列は空白を含む場合でも単一の引数として解釈されます。二重引用符で囲んだ文字列を引数に埋め込むこともできます。キャレット (^) または区切り記号がエスケープ文字として認識されないことに注意してください。
バックス ラッシュ\ 」前にを付けて二重引用符はリテラル二重引用符 ( 「 ) として解釈されます。
二重引用符の直前にある円記号以外は、円記号 (\) として解釈されます。
バックス ラッシュの偶数が二重引用符の直前にする場合は1 バックス ラッシュ \() はバックス ラッシュ ()\ \ のペアの配列の argv二重引用符 () に 「 文字列の区切り記号として解釈されます。
バックス ラッシュの奇数が二重引用符の直前にする場合は1 バックス ラッシュ \() はバックス ラッシュ \ \() と二重引用符のペアの argv の配列に argv に配置されます。リテラル二重引用符 () を 「 残りのバックス ラッシュにエスケープ シーケンスとして解釈されます。
このリストはコマンド ライン引数の複数の argv に渡されるデコードされた結果を表示して上記の規則について説明します。番目2 番目と 4 番目の列に表示される出力は一覧の後 ARGS.C のプログラムからです。
コマンド ラインの入力 |
argv [1] |
argv [2] |
argv [3] |
|---|---|---|---|
"a b c" d e |
a b c |
d |
e |
"ab\"c" "\\" d |
ab"c |
\ |
d |
a\\\b d"e f"g h |
a\\\b |
de fg |
h |
a\\\"b c d |
a\"b |
c |
d |
a\\\\"b c" d e |
a\\b c |
d |
e |
例
コード
// Parsing_C_Commandline_args.c
// ARGS.C illustrates the following variables used for accessing
// command-line arguments and environment variables:
// argc argv envp
//
#include <stdio.h>
int main( int argc, // Number of strings in array argv
char *argv[], // Array of command-line argument strings
char **envp ) // Array of environment variable strings
{
int count;
// Display each command-line argument.
printf_s( "\nCommand-line arguments:\n" );
for( count = 0; count < argc; count++ )
printf_s( " argv[%d] %s\n", count, argv[count] );
// Display each environment variable.
printf_s( "\nEnvironment variables:\n" );
while( *envp != NULL )
printf_s( " %s\n", *(envp++) );
return;
}
コメント
このプログラムの出力は次の 1 とおりの例を次に示します。:
Command-line arguments:
argv[0] C:\MSC\TEST.EXE
Environment variables:
COMSPEC=C:\NT\SYSTEM32\CMD.EXE
PATH=c:\nt;c:\binb;c:\binr;c:\nt\system32;c:\word;c:\help;c:\msc;c:\;
PROMPT=[$p]
TEMP=c:\tmp
TMP=c:\tmp
EDITORS=c:\binr
WINDIR=c:\nt
終了 Microsoft 固有の仕様→