Compartir a través de


Analizar los argumentos de la línea de comandos de C

Específicos de Microsoft

El código de inicio de Microsoft C utiliza las reglas siguientes al interpretar los argumentos proporcionados en la línea de comandos del sistema operativo:

  • Los argumentos se delimitan mediante caracteres de espacio en blanco, que son espacios o tabulaciones.

  • El primer argumento (argv[0]) se trata de forma especial. Representa el nombre del programa. Dado que debe ser un nombre de ruta válido, se permiten partes entre comillas dobles ( " ). Las comillas dobles no se incluyen en la salida argv[0]. Las partes delimitadas por comillas dobles impiden la interpretación de un carácter de espacio o tabulación como final del argumento. No se aplican las últimas reglas de esta lista.

  • Una cadena delimitada por comillas dobles se interpreta como un solo argumento, tanto si contiene caracteres de espacio en blanco como si no. Se puede incrustar una cadena entre comillas dentro de un argumento. El carácter de intercalación ( ^ ) no se reconoce como carácter de escape ni como delimitador. Dentro de una cadena entrecomillada, un par de comillas dobles se interpreta como una sola marca de comilla doble con escape. Si la línea de comandos finaliza antes de que se encuentre una comilla doble de cierre, todos los caracteres leídos hasta ahora se muestran como último argumento.

  • Un signo de comillas dobles precedido por una barra diagonal inversa ( \" ) se interpreta como signo de comillas dobles literal ( " ).

  • Las barras diagonales inversas se interpretan literalmente, a menos que precedan inmediatamente a unas comillas dobles.

  • Si un número par de barras diagonales inversas va seguido de un signo de comillas dobles, se coloca una barra diagonal inversa ( \ ) en la matriz argv por cada par de barras diagonales inversas ( \\ ) y el signo de comillas dobles (" ) se interpreta como delimitador de cadena.

  • Si un número impar de barras diagonales inversas va seguido de una comilla doble, se coloca una barra diagonal inversa ( \ ) en la matriz argv por cada par de barras diagonales inversas ( \\ ). La barra diagonal restante interpreta la comilla doble como una secuencia de escape, lo que hace que se coloque una marca de comilla doble literal ( " ) en argv.

En esta lista se muestran las reglas anteriores y el resultado interpretado que se pasa a argv para varios ejemplos de argumentos de la línea de comandos. La salida que se muestra en las columnas segunda, tercera y cuarta proviene del programa ARGS.C que sigue a la lista.

Entrada de la línea de comandos 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

Ejemplo

Código

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

Un ejemplo de la salida de este programa es:

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

FIN de Específicos de Microsoft

Consulte también

Función main y ejecución del programa