分析C Command-line参数
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 的结尾