Programming in C

(Barry) #1

382 Chapter 17 Miscellaneous and Advanced Features


If argcis equal to 2, the lookupfunction is called to find the word pointed to by
argv[1]in the dictionary. If the word is found, its definition is displayed.
As another example of command-line arguments, Program 16.3 was a file-copy pro-
gram. Program 17.1, which follows, takes the two filenames from the command line,
rather than prompting the user to type them in.

Program 17.1 File Copy Program Using Command-Line Arguments
// Program to copy one file to another -- version 2

#include <stdio.h>

int main (int argc, char *argv[])
{
FILE *in, *out;
int c;

if ( argc != 3 ) {
fprintf (stderr, "Need two files names\n");
return 1;
}

if ( (in = fopen (argv[1], "r")) == NULL ) {
fprintf (stderr, "Can't read %s.\n", argv[1]);
return 2;
}

if ( (out = fopen (argv[2], "w")) == NULL ) {
fprintf (stderr, "Can't write %s.\n", argv[2]);
return 3;
}

while ( (c = getc (in)) != EOF )
putc (c, out);

printf ("File has been copied.\n");

fclose (in);
fclose (out);

return 0;
}

The program first checks to make certain that two arguments were typed after the pro-
gram name. If so, the name of the input file is pointed to by argv[1], and the name of
Free download pdf