C 명령줄 인수 구문 분석Parsing C Command-Line Arguments

Microsoft 전용Microsoft Specific

Microsoft C 시작 코드에서는 운영 체제 명령줄에 지정된 인수를 해석할 때 다음 규칙을 사용합니다.Microsoft C startup code uses the following rules when interpreting arguments given on the operating system command line:

  • 인수를 공백이나 탭으로 구분합니다.Arguments are delimited by white space, which is either a space or a tab.

  • 큰따옴표로 묶은 문자열은 포함된 공백에 상관없이 하나의 인수로 해석됩니다.A string surrounded by double quotation marks is interpreted as a single argument, regardless of white space contained within. 따옴표로 묶은 문자열은 인수에 포함될 수 있습니다.A quoted string can be embedded in an argument. 캐럿(^)은 이스케이프 문자나 구분 기호로 인식되지 않습니다.Note that the caret (^) is not recognized as an escape character or delimiter.

  • 백슬래시 다음의 큰따옴표(\")는 리터럴 큰따옴표(")로 해석됩니다.A double quotation mark preceded by a backslash, \", is interpreted as a literal double quotation mark (").

  • 백슬래시는 큰따옴표 바로 앞에 있지 않으면 리터럴로 해석됩니다.Backslashes are interpreted literally, unless they immediately precede a double quotation mark.

  • 짝수 개의 백슬래시 다음에 큰따옴표가 오는 경우, 백슬래시 쌍(\\)마다 하나의 백슬래시(\)가 argv 배열에 배치되고 큰따옴표(")는 문자열 구분 기호로 해석됩니다.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.

  • 홀수 개의 백슬래시 다음에 큰따옴표가 오는 경우, 백슬래시 쌍(\\)마다 하나의 백슬래시(\)가 argv 배열에 배치되고 큰따옴표는 남은 백슬래시에 의해 이스케이프 시퀀스로 해석되어 리터럴 큰따옴표(")가 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.

    다음 목록은 몇 가지 명령줄 인수 예제의 경우 argv에 전달된 해석된 결과를 표시하여 위의 규칙을 보여 줍니다.This list illustrates the rules above by showing the interpreted result passed to argv for several examples of command-line arguments. 두 번째, 세 번째 및 네 번째 열에 나와 있는 출력은 다음 목록 뒤에 나오는 ARGS.C 프로그램에서 제공된 것입니다.The output listed in the second, third, and fourth columns is from the ARGS.C program that follows the list.

명령줄 입력Command-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

예제Example

코드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;  
}  

설명Comments

이 프로그램의 출력 예는 다음과 같습니다.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        

Microsoft 전용 종료END Microsoft Specific

참고 항목See Also

main 함수 및 프로그램 실행main Function and Program Execution