Analisi di argomenti della riga di comando CParsing C Command-Line Arguments

Sezione specifica MicrosoftMicrosoft Specific

Il codice di avvio C di Microsoft utilizza le regole seguenti quando interpreta gli argomenti forniti alla riga di comando del sistema operativo.Microsoft C startup code uses the following rules when interpreting arguments given on the operating system command line:

  • Gli argomenti sono delimitati da spazi vuoti, ovvero da uno spazio o da una tabulazione.Arguments are delimited by white space, which is either a space or a tab.

  • Una stringa racchiusa tra virgolette doppie viene interpretata come argomento singolo, indipendentemente dalla presenza di spazi al suo interno.A string surrounded by double quotation marks is interpreted as a single argument, regardless of white space contained within. Una stringa tra virgolette può essere incorporata in un argomento.A quoted string can be embedded in an argument. Si noti che l'accento circonflesso (^) non viene riconosciuto come carattere di escape o delimitatore.Note that the caret (^) is not recognized as an escape character or delimiter.

  • Le virgolette doppie precedute da una barra rovesciata (\") vengono interpretate letteralmente come virgolette doppie (").A double quotation mark preceded by a backslash, \", is interpreted as a literal double quotation mark (").

  • Le barre rovesciate vengono interpretate letteralmente, a meno che non precedano virgolette doppie.Backslashes are interpreted literally, unless they immediately precede a double quotation mark.

  • Se le virgolette doppie seguono un numero pari di barre rovesciate, per ogni coppia di barre rovesciate (\\) viene inserita nella matrice argv una barra rovesciata (\) e le virgolette doppie (") vengono interpretate come delimitatori di stringa.If an even number of backslashes is followed by a double quotation mark, then one backslash (\) is placed in the argv array for every pair of backslashes (\\), and the double quotation mark (") is interpreted as a string delimiter.

  • Se un numero dispari di barre rovesciate è seguito da un segno di virgolette doppie, viene inserita una barra rovesciata (\) nella matrice argv per ogni coppia di barre rovesciate (\\) e le virgolette doppie vengono interpretate come sequenza di escape dalla barra rovesciata rimanente, causando l'inserimento di virgolette doppie (") letterali in argv.If an odd number of backslashes is followed by a double quotation mark, then one backslash (\) is placed in the argv array for every pair of backslashes (\\) and the double quotation mark is interpreted as an escape sequence by the remaining backslash, causing a literal double quotation mark (") to be placed in argv.

    In questo elenco vengono illustrate le regole precedenti per visualizzare il risultato interpretato come passato a argv per alcuni esempi di argomenti della riga di comando.This list illustrates the rules above by showing the interpreted result passed to argv for several examples of command-line arguments. L'output elencato nella seconda, terza e quarta colonna viene dal programma ARGS.C che segue l'elenco.The output listed in the second, third, and fourth columns is from the ARGS.C program that follows the list.

Input della riga di comandoCommand-Line Input argv[1]argv[1] argv[2]argv[2] argv[3]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

EsempioExample

CodiceCode

// Parsing_C_Commandline_args.c  
// 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;  
}  

CommentiComments

Un esempio di output del programma è:One example of output from this program is:

Command-line arguments:  
  argv[0]   C:\MSC\TEST.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        

Fine sezione specifica MicrosoftEND Microsoft Specific

Vedere ancheSee Also

Funzione main ed esecuzione di programmimain Function and Program Execution