Analyse-C-Befehlszeilen-Argumente
Microsoft-spezifisch
Microsoft C-Startcode verwendet die folgenden Regeln, wenn die Argumente interpretiert werden, die auf der Befehlszeile des Betriebssystems angegeben werden:
Argumente werden durch einen Leerraum (Leerzeichen oder Tabstopp) abgegrenzt.
Eine Zeichenfolge, die durch doppelte Anführungszeichen eingeschlossen ist, wird als einzelnes Argument, unabhängig von den Leerraum interpretiert, die darin enthalten sind.Eine Zeichenfolge in Anführungszeichen kann in ein Argument eingebettet sein.Beachten Sie, dass das Caretzeichen (^) nicht als Escapezeichen oder Trennzeichen erkannt wird.
Ein doppeltes Anführungszeichen, gefolgt von einem umgekehrten Schrägstrich, \„vorangestellt ist, wird als literales Anführungszeichen („) interpretiert.
Ein umgekehrter Schrägstrich wird als solcher interpretiert, sofern er nicht unmittelbar vor einem Anführungszeichen steht.
Wenn eine gerade Anzahl umgekehrter Schrägstriche von einem doppelten Anführungszeichen folgt, wird ein umgekehrter Schrägstrich (\) in das argv Array für jedes Paar umgekehrter Schrägstriche (\ \) und das doppelte Anführungszeichen (**„**als Zeichenfolgentrennzeichen interpretiert wird) gesetzt.
Wenn eine ungerade Anzahl umgekehrter Schrägstriche von einem doppelten Anführungszeichen folgen, wird bewirkt, dass ein umgekehrter Schrägstrich (\) in das argv Array für jedes Paar von umgekehrten Schrägstrichen (\ \) und doppelten Anführungszeichen als Escapezeichen interpretiert wird vom übrigen umgekehrten Schrägstrich eingefügt und ein Literal double anführungszeichen („) in argveingefügt werden soll.
Diese Liste zeigt die Regeln oben, indem sie das interpretierte Ergebnis angezeigt werden, das argv für einige Beispiele für Befehlszeilenargumente übergeben wird.Die in der zweiten Ausgabe, die im dritten und vierten Spalten aufgeführt wird, ist vom ARGS.C-Programm, das der Liste folgt.
Befehlszeilen-Eingabe |
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 |
Beispiel
Code
// 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;
}
Kommentare
Ein Beispiel für die Ausgabe dieses Programms:
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
Microsoft ENDES bestimmten