Microsoft 专用
在解释操作系统命令行上给出的参数时,Microsoft C 启动代码使用下列规则:
参数用空白分隔,空白可以是一个空格或制表符。
无论其中是否包含空白,双引号括起来的字符串均被解释为单个参数。 带引号的字符串可以嵌入在参数内。 请注意,插入符号 (^) 未被识别为转义符或者分隔符。
前面有反斜杠的双引号 \" 被解释为原义双引号字符 (")。
反斜杠按其原义解释,除非它们紧位于双引号之前。
如果偶数个反斜杠后跟双引号,则每对反斜杠 (\\) 中有一个反斜杠 (\) 被置于 argv 数组中,而双引号 (") 被解释为字符串分隔符。
如果奇数个反斜杠后跟双引号,则每对反斜杠 (\\) 中有一个反斜杠 (\) 被置于 argv 数组中,而通过剩余的反斜杠,双引号被解释为反义序列,从而使原义双引号字符 (") 放置在 argv 中。
此列表通过显示命令行参数的多个示例的传递到 argv 的解释结果来阐释上述规则。 在第二列、第三列和第四列中列出的输出来自于遵循列表的 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;
}
注释
此程序中输出的一个示例是:
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 专用