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şareti (") 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, bir boşluğun veya sekme karakterinin bağımsız değişkenin sonu olarak 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çine alınmış bir dizede çift tırnak işareti çifti, tek bir kaçış çift tırnak işareti olarak yorumlanır. Komut satırı kapanış çift tırnak işareti bulunmadan önce biterse, şimdiye kadar okunan tüm karakterler son bağımsız değişken olarak çıkış olur.

  • Ters eğik çizgiden (\") önce gelen çift tırnak işareti, değişmez değer çift tırnak işareti (") olarak yorumlanır.

  • Ters eğik çizgiler, çift tırnak işaretine hemen önce gelmedikleri sürece tam anlamıyla yorumlanır.

  • Çift sayıda ters eğik çizgi ve ardından çift tırnak işareti gelirse, her çift ters eğik çizgi () 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 gelirse, 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 değişmez değer ç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 şöyledir:

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