Sdílet prostřednictvím


Analýza argumentů příkazového řádku jazyka C

Specifické pro Microsoft

Spouštěcí kód Microsoft C používá při interpretaci argumentů z příkazového řádku operačního systému následující pravidla:

  • Argumenty jsou oddělené prázdnými znaky, což jsou mezery nebo tabulátory.

  • První argument (argv[0]) se zpracovává speciálně. Představuje název programu. Protože musí být platným názvem cesty, jsou části obklopené dvojitými uvozovkami (") povoleny. Do výstupu argv[0] nejsou zahrnuty dvojité uvozovky. Části obklopené dvojitými uvozovkami brání interpretaci znaku mezery nebo tabulátoru jako konce argumentu. Pozdější pravidla v tomto seznamu se nevztahují.

  • Řetězec obklopený dvojitými uvozovkami je interpretován jako jediný argument, ať už obsahuje prázdné znaky, nebo ne. Do argumentu lze vložit řetězec s uvozovými znaky. Stříšku (^) se nerozpozná jako řídicí znak nebo oddělovač. V uvozovkách se dvojice dvojitých uvozovek interpretuje jako jednoduchá uvozovka s jednoduchým uvozovkou. Pokud příkazový řádek končí před nalezením uzavírací dvojité uvozovky, všechny znaky přečtené zatím jsou výstupem jako poslední argument.

  • Dvojitá uvozovka před lomítkem (\") se interpretuje jako literálová uvozovka (").

  • Zpětné lomítka se interpretují doslova, pokud bezprostředně před dvojitou uvozovkou nejdou.

  • Pokud za dvojitou uvozovkou následuje sudý počet zpětných lomítek, pak se jedno zpětné lomítko (\) umístí do argv pole pro každou dvojici zpětných lomítek (\\) a dvojitá uvozovka (") se interpretuje jako oddělovač řetězců.

  • Pokud je lichý počet zpětných lomítek následovaný dvojitou uvozovkou, je jedno zpětné lomítko (\) umístěné v argv poli pro každou dvojici zpětných lomítek (\\). Dvojitá uvozovka se interpretuje jako řídicí sekvence zbývajícím zpětným lomítkem, což způsobí umístění literálové uvozovky (") do argv.

Tento seznam ukazuje výše uvedená pravidla zobrazením interpretovaného výsledku předaného do argv pro několik příkladů argumentů příkazového řádku. Výstup uvedený v druhém, třetím a čtvrtém sloupci je z aplikace ARGS.C, která následuje seznam.

Vstup příkazového řádku 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

Příklad

Kód

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

Jeden příklad výstupu z této aplikace je:

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 Specific

Viz také

main provádění funkcí a programů