Introduction to C Programming CE003121 - PowerPoint PPT Presentation

1 / 14
About This Presentation
Title:

Introduction to C Programming CE003121

Description:

where argc is the number of strings and argv is the array of strings ... argc is 3, and argv is an array of 'a.out', 'datain' and 'dataout' ... – PowerPoint PPT presentation

Number of Views:83
Avg rating:3.0/5.0
Slides: 15
Provided by: rgh1
Category:

less

Transcript and Presenter's Notes

Title: Introduction to C Programming CE003121


1
Introduction to C ProgrammingCE00312-1
  • Lecture 15
  • Files and Program Parameters

2
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, dd, a, b)
  • Output fprintf writes to a file
  • e.g. out_file fopen(data2.dat, w)
  • fprintf(out_file, d d\n, a, b)

3
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.

4
include "stdio.h" int main(void) int
a,b,c char filename21// string file name
FILE out_file // file pointer for output
printf("\ntype name of output file ")
// prompt on screen gets(filename) //
input from keyboard
5
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("dd", a, b) // from keyboard c
ab fprintf(out_file, "d\n", c) //
output to file fclose (out_file) return
0 // normal program exit
6
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.

7
  • 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

8
  • 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

9
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.

10
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
11
// check for FILE names if (argc lt 3)
printf("\nMissing file name(s).\n") print
f("Too few parameters d", argc) return 1
// abnormal exit from program //
the 2 file names cannot be the same if
((strcmp(argv1, argv2) 0))
printf("\nsame file names !\n") return 1
// abnormal exit
12
// open first file for input myfile_in
fopen(argv1, "r") if (myfile_in NULL)
// check if input file exists
printf("\ncant open input files\n", argv
1) return 1 // abnormal exit //
open second file for output myfile_out
fopen(argv2, "w") if (myfile_out NULL) //
playing safe! printf("\ncant open O/P
files\n", argv2) fclose(myfile_in) /
/ already opened return 1 // abnormal
exit
13
// check option, should be -echo if
(argc 4) // 4th parameter if
(strcmp(argv3,"-echo") 0)
option 1 // echo on screen else
printf("illegal s\n", argv3)
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
14
for (row0 rowlt5 row) // copy each
row for (col0 collt5 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
fclose(myfile_in) fclose(myfile_out)
return 0 // normal exit // end main
Write a Comment
User Comments (0)
About PowerShow.com