Analýza argumentů příkazového řádku c
Konkrétní společnosti Microsoft
Při interpretaci argumenty na příkazovém řádku operačního systému, Microsoft C spouštěcí kód používá následující pravidla:
Argumenty jsou odděleny prázdným znakem, což je mezera nebo tabulátor.
Řetězec ohraničena uvozovkami interpretována jako jediný argument, bez ohledu na prázdné místo v.Do argumentu může být vložen řetězec v uvozovkách.Všimněte si, že znaku stříšky (^) nebyl rozpoznán jako znak escape nebo oddělovač.
Dvojité uvozovky znak zpětného lomítka, \ ", je interpretován jako literál dvojité uvozovky (").
Zpětná lomítka jsou interpretovány doslovně, pokud jsou bezprostředně předcházeny znakem dvojitých uvozovek.
Pokud sudý počet zpětnými lomítky následuje uvozovky, potom jedno zpětné lomítko (\) je umístěna do argv pole pro každou dvojici zpětná lomítka (\) a dvojité uvozovky (") je interpretována jako oddělovač řetězců.
Pokud lichý počet zpětnými lomítky následuje uvozovky, potom jedno zpětné lomítko (\) je umístěn v argv pole pro každou dvojici zpětná lomítka (\) a dvojité uvozovky interpretovány jako sekvence escape zbývající zpětným lomítkem způsobuje literál dvojité uvozovky (") do argv.
Tento seznam ukazuje pravidla nad zobrazením interpretovaný výsledek předán argv pro několik příkladů argumenty příkazového řádku.Výstup uvedené v druhé, třetí, a čtvrtého sloupce je argumenty.C program, který následuje seznam.
Vstupní příkazového řádku |
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 |
Příklad
Kód
// 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;
}
Komentáře
Příklad výstupu z tohoto programu je:
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
Konec konkrétní společnosti Microsoft