Podczas analizowania c argumentów wiersza polecenia.
Programu Microsoft
Przy interpretowaniu argumenty podane w wierszu polecenia systemu operacyjnego Microsoft C kod startowy stosowane są następujące reguły:
Argumenty są rozdzielane przez światło, które jest spacja lub tabulator.
Ciąg, ujęte w podwójne cudzysłowy jest interpretowana jako pojedynczy argument, niezależnie od miejsca białe zawartych w ramach.Ciąg w cudzysłowach, mogą być osadzone w argumencie.Należy zauważyć, że znak karetki (^) nie jest rozpoznawany jako znak anulowania lub ogranicznika.
Podwójny cudzysłów poprzedzone znaku odwrotnej kreski ukośnej, \ ", jest interpretowany jako literał podwójny cudzysłów (").
Ukośniki odwrotne są interpretowane dosłownie, chyba że bezpośrednio poprzedzać podwójny cudzysłów.
Jeśli nawet liczba kresek ułamkowych odwróconych następuje podwójny cudzysłów, a następnie jeden odwrotnej kreski ukośnej (\) jest umieszczana w argv tablicy dla każdej pary kresek ułamkowych odwróconych (\) i podwójnego znaku cudzysłowu (") jest interpretowana jako ogranicznik ciągu.
Jeśli nieparzysta liczba kresek ułamkowych odwróconych następuje podwójny cudzysłów, a następnie jeden odwrotnej kreski ukośnej (\) jest umieszczana w argv tablicy dla każdej pary kresek ułamkowych odwróconych (\) i podwójnego znaku cudzysłowu jest interpretowana jako sekwencji unikowej przez pozostałe odwróconą, powodując literału podwójny cudzysłów (") mają być umieszczone w argv.
Wykaz ten ilustruje zasady powyżej wykazując wynik interpretowany, przekazany do argv kilka przykładów argumentów wiersza polecenia.Dane wyjściowe wymienione w akapicie drugim, trzecim, a czwarty kolumn jest ARGS.C program, który wynika z listy.
Dane wejściowe wiersza polecenia |
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 |
Przykład
Kod
// 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;
}
Komentarze
Przykład danych wyjściowych z tego programu jest:
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
KONIEC Microsoft szczególne