C komut satırı bağımsız değişkenlerini ayrıştırma
Microsoft'a Özgü
Microsoft C başlangıç kodu, işletim sistemi komut satırında verilen bağımsız değişkenleri yorumlarken aşağıdaki kuralları kullanır:
Bağımsız değişkenler boşluk veya sekme olan boşluk karakterleriyle sınırlandırılır.
İlk bağımsız değişken (
argv[0]
) özel olarak ele alınır. Program adını temsil eder. Geçerli bir yol adı olması gerektiğinden, çift tırnak işaretleri ("
) ile çevrili bölümlere izin verilir. Çift tırnak işaretleri çıkışaargv[0]
dahil değildir. Çift tırnak işaretleri ile çevrili bölümler, bağımsız değişkenin sonu olarak bir boşluk veya sekme karakterinin yorumlanmasını engeller. Bu listedeki sonraki kurallar geçerli değildir.Çift tırnak işaretleri ile çevrili bir dize, boşluk karakterleri içerse de içermese de tek bir bağımsız değişken olarak yorumlanır. Tırnak içine alınmış bir dize bağımsız değişkene eklenebilir. Şapka işareti (
^
), kaçış karakteri veya sınırlayıcı olarak tanınmaz. Tırnak içinde bir çift tırnak işareti, tek bir kaçış çift tırnak işareti olarak yorumlanır. Bir kapanış çift tırnak işareti bulunmadan önce komut satırı biterse, şimdiye kadar okunan tüm karakterler son bağımsız değişken olarak çıktı olur.Önünde ters eğik çizgi (
\"
) olan çift tırnak işareti, değişmez değer çift tırnak işareti ("
) olarak yorumlanır.Ters eğik çizgi, çift tırnak işaretinin hemen önüne gelmediği sürece tam anlamıyla yorumlanır.
Çift sayıda ters eğik çizgi ve ardından çift tırnak işareti gelirse, her ters eğik çizgi () çifti için diziye
argv
bir ters eğik çizgi (\
\\
) yerleştirilir ve çift tırnak işareti ("
) dize sınırlayıcısı olarak yorumlanır.Tek sayıda ters eğik çizgi ve ardından çift tırnak işareti geliyorsa, her ters eğik çizgi () çifti için diziye
argv
bir ters eğik çizgi (\
\\
) yerleştirilir. Çift tırnak işareti, kalan ters eğik çizgi tarafından kaçış dizisi olarak yorumlanır ve sabit çift tırnak işaretinin ("
) içineargv
yerleştirilmesine neden olur.
Bu liste, komut satırı bağımsız değişkenlerinin çeşitli örnekleri için geçirilen argv
yorumlanan sonucu göstererek yukarıdaki kuralları gösterir. İkinci, üçüncü ve dördüncü sütunlarda listelenen çıkış ARGS'dendir. Listeyi izleyen C programı.
Komut satırı girişi | 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 |
a"b"" c d |
ab" c d |
Örnek
Kod
// 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;
}
Bu programın çıktılarından biri şu şekildedir:
Command-line arguments:
argv[0] C:\MSC\ARGS.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
END Microsoft'a Özgü