Parsing C command-line arguments

Microsoft C startup code uses the following rules when interpreting arguments given on the operating system command line:

This list illustrates the rules above by showing the interpreted result passed to argv for several examples of command-line arguments. 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[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

Example

Code

// ARGS.C illustrates the following variables used for accessing // command-line arguments and environment variables: // argc argv envp // #include 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; >

One example of output from this program is:

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