Introduction to c programming ce00312 1
1 / 14

Introduction to C Programming CE00312-1 - PowerPoint PPT Presentation

  • Uploaded on

Introduction to C Programming CE00312-1. Lecture 15 Files and Program Parameters. File Input and Output. Each file must be explicitly opened before reading or writing (using actual file name as a string) and closed before execution finishes. Input: fscanf reads from a file

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

PowerPoint Slideshow about ' Introduction to C Programming CE00312-1 ' - leann

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Introduction to c programming ce00312 1

Introduction to C ProgrammingCE00312-1

Lecture 15

Files and Program Parameters

File input and output
File Input and Output

  • Each file must be explicitly opened before reading or writing (using actual file name as a string) and closed before execution finishes.

  • Input:fscanf reads from a file

    e.g. in_file = fopen(“data1.dat”, “r”);

    fscanf(in_file, “%d%d”, &a, &b);

  • Output: fprintf writes to a file

    e.g. out_file = fopen(“data2.dat”, “w”);

    fprintf(out_file, “%d %d\n”, a, b);

File output example
File output example

The program on the next slide

  • prompts the user for a file name,

  • reads the file name,

  • prompts for input data,

  • reads 2 numbers from keyboard and

  • writes their sum to the named output file.

#include "stdio.h"

int main(void)


int a,b,c;

char filename[21];// string file name

FILE *out_file; // file pointer for output

printf("\ntype name of output file: ");

// prompt on screen

gets(filename); // input from keyboard

out_file = fopen(filename, "w");

// open file for output

if (out_file == NULL)


printf("\ncannot open: %s", filename);

return 1; // abnormal program exit


printf("\ntype 2 integers"); // prompt

scanf("%d%d", &a, &b); // from keyboard

c = a+b;

fprintf(out_file, "%d\n", c);

// output to file

fclose (out_file);

return 0; // normal program exit


Program parameters
Program Parameters

  • File names and run-time options can be provided in Unix on the command line when a program is executed.

  • The normal command line a.out could be replaced by,

    a.out datain dataout

    where “datain” and “dataout” are the input and output files.

  • These 2 strings must be recognised by the C program so that these files can be used for the input/output. Note that the input file “datain” must already contain data.

Program parameters, conventionally called argc and argv, are used to determine which file names and options were supplied.

int main(void) // ANSI convention

is replaced by:

int main(int argc, char* argv[]) // universal

where argc is the number of strings and argv is the array of strings

For the command line: a.out datain dataout

argc is 3, and argv is an array of

“a.out”, “datain” and “dataout”

Execution options may be similarly specified, conventionally preceded with a ‘-’ so as to be distinguished from file names.

For example: a.out datain dataout -option

Program parameter example
Program Parameter Example

Copy all 25 integers from the given input file to the given output file.

The input file comprises 25 integers with no formatting but just separated by spaces or new lines.

The output file shall comprise 5 rows of 5 integers each separated by a space.

There is an option to echo the output on to the screen, where the 2 file names and any “-echo” option are program parameters.

#include "stdio.h"

#include "string.h"

int main(int argc, char *argv[])

// program parameters on command line,

// e.g. a.out datain dataout -echo

// argc is 4 and argv is

// array of these as 4 strings


int num;

// for copying each integer

int row, col, option = 0;

// no echo on screen, by default

FILE *myfile_in, *myfile_out;

// for 2 files

// check for FILE names

if (argc < 3)


printf("\nMissing file name(s).\n");

printf("Too few parameters %d", argc);

return 1;

// abnormal exit from program


// the 2 file names cannot be the same

if ((strcmp(argv[1], argv[2]) == 0))


printf("\nsame file names !\n");

return 1; // abnormal exit


// open first file for input

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

if (myfile_in == NULL)

// check if input file exists


printf("\ncan’t open input file:%s\n",


return 1; // abnormal exit


// open second file for output

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

if (myfile_out == NULL) // playing safe!


printf("\ncan’t open O/P file:%s\n",


fclose(myfile_in); // already opened

return 1; // abnormal exit


// check option, should be -echo

if (argc == 4) // 4th parameter


if (strcmp(argv[3],"-echo") == 0)


option = 1; // echo on screen




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

printf("must be -echo\n");

fclose(myfile_in); // already

fclose(myfile_out); // opened

return 1; // abnormal exit



// else no 4th parameter specified,

// option remains 0

for (row=0; row<5; row++)

{ // copy each row

for (col=0; col<5; col++)

{ // copy each column

fscanf(myfile_in, “%d”, &num);

fprintf(myfile_out, “%d ”, num);

// after each integer is a space

if (option) // option == 1

printf(“%d ”, num);// echo


fprintf(myfile_out, “\n”); // end row

if (option)

printf(“\n”); // echo




return 0; // normal exit

} // end main