Aracılığıyla paylaş


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ışa argv[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çine argvyerleş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ü

Ayrıca bkz.

main işlev ve program yürütme