INF: Opening Files Using Command Line Arguments

ID Number: Q39216

5.10 6.00 6.00a 6.00ax 7.00 | 5.10 6.00 6.00a

MS-DOS | OS/2

Summary:

In Microsoft C versions 5.1, 6.0, 6.0a, 6.0ax, and C/C++ version 7.0,

filenames may be specified as command line arguments to a C program.

The example below uses the first command line argument as the name of

the input file and the second as the name of the output file. The

parameter argv, which is declared by main(), is used to access the

command line arguments.

In the example below, the following occurs:

1. argv[0] will contain a full path to the source (exe) file.

2. argv[1] will contain the first argument, which is the input filename.

3. argv[2] will contain the second argument, which is the output filename.

More Information:

The following program opens a file for reading and writing and also

prints argv[0], argv[1], and argv[2]. Note that argc is checked to

make sure that two argument strings were actually passed and that the

file pointers are checked to make sure that the files were actually

opened.

#include <stdio.h>

main (argc,argv)

int argc;

char *argv[];

{

FILE *in, *out;

if (argc < 3) { /* Enough arguments? */

puts("Usage: demo infile outfile");

exit(1);

}

printf("%s\n", argv[0]);

printf("%s\n", argv[1]);

printf("%s\n", argv[2]);

in = fopen (argv[1],"r");

out = fopen (argv[2],"w");

if (in == NULL || out == NULL) {

puts("Could not open both files");

exit(2);

}

puts("Opened both files OK");

exit(0);

}

The command line: "C:\>demo infile outfile" produces the following

output if infile and outfile can be opened:

C:\demo.exe

infile

outfile

Opened both files OK

Additional reference words: 5.10 6.00 6.00a 6.00ax 7.00