Bagikan melalui


Mengurai argumen baris-perintah C

Khusus Microsoft

Kode penyiapan Microsoft C menggunakan aturan berikut saat menginterpretasikan argumen yang diberikan pada baris perintah sistem operasi:

  • Argumen dibatasi oleh karakter spasi putih, yang merupakan spasi atau tab.

  • Argumen pertama (argv[0]) diperlakukan secara khusus. Ini mewakili nama program. Karena harus berupa nama jalur yang valid, bagian yang dikelilingi oleh tanda kutip ganda (") diizinkan. Tanda kutip ganda tidak disertakan dalam output argv[0]. Bagian yang dikelilingi oleh tanda kutip ganda mencegah interpretasi spasi atau karakter tab sebagai akhir argumen. Aturan selanjutnya dalam daftar ini tidak berlaku.

  • String yang dikelilingi oleh tanda kutip ganda diinterpretasikan sebagai argumen tunggal, baik berisi karakter spasi putih atau tidak. String yang dikutip dapat disematkan dalam argumen. Tanda sisipan (^) tidak dikenali sebagai karakter escape atau pemisah. Dalam string yang dikutip, sepasang tanda kutip ganda ditafsirkan sebagai tanda kutip ganda escape tunggal. Jika baris perintah berakhir sebelum tanda kutip ganda penutup ditemukan, semua karakter yang dibaca sejauh ini adalah output sebagai argumen terakhir.

  • Tanda kutip ganda yang didahului oleh garis miring terbalik (\") ditafsirkan sebagai tanda kutip ganda literal (").

  • Garis miring terbalik ditafsirkan secara harfiah, kecuali garis miring terbalik segera mendahului tanda kutip ganda.

  • Jika garis miring terbalik berjumlah genap diikuti dengan tanda kutip ganda, maka satu garis miring terbalik (\) ditempatkan dalam array argv untuk setiap pasangan garis miring terbalik (\\), dan tanda kutip ganda (") ditafsirkan sebagai pemisah string.

  • Jika garis miring terbalik berjumlah ganjil diikuti dengan tanda kutip ganda, maka satu garis miring terbalik (\) ditempatkan dalam array argv untuk setiap pasangan garis miring terbalik (\\). Tanda kutip ganda ditafsirkan sebagai urutan escape oleh garis miring terbalik yang tersisa, sehingga tanda kutip ganda literal (") ditempatkan di argv.

Daftar ini mengilustrasikan aturan di atas dengan menunjukkan hasil yang ditafsirkan yang diteruskan ke argv untuk beberapa contoh argumen baris-perintah. Output yang tercantum dalam kolom kedua, ketiga, dan keempat berasal dari program ARGS.C yang mengikuti daftar.

Input baris perintah 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

Contoh

Kode

// 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;
}

Salah satu contoh output dari program ini adalah:

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

Khusus Microsoft END

Lihat juga

main fungsi dan eksekusi program