1 / 15

File Handling in C

File Handling in C. Lecture 17c 20/3/01. Introduction. Files are places where data can be stored permanently. Some programs expect the same set of data to be fed as input every time it is run. Cumbersome. Better if the data are kept in a file, and the program reads from the file.

ksena
Download Presentation

File Handling in C

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. File Handling in C Lecture 17c 20/3/01 Sudeshna Sarkar, CSE, IIT Kharagpur

  2. Introduction • Files are places where data can be stored permanently. • Some programs expect the same set of data to be fed as input every time it is run. • Cumbersome. • Better if the data are kept in a file, and the program reads from the file. • Programs generating large volumes of output. • Difficult to view on the screen. • Better to store them in a file for later viewing/ processing Sudeshna Sarkar, CSE, IIT Kharagpur

  3. Basic File Operations • Opening a file • Reading data from a file • Writing data to a file • Closing a file Sudeshna Sarkar, CSE, IIT Kharagpur

  4. Opening a File • A file must be “opened” before it can be used. FILE *fp; : fp = fopen (filename, mode); • fp is declared as a pointer to the data type FILE. • filename is a string - specifies the name of the file. • fopen returns a pointer to the file which is used in all subsequent file operations. • mode is a string which specifies the purpose of opening the file: “r” :: open the file for reading only “w” :: open the file for writing only “a” :: open the file for appending data to it Sudeshna Sarkar, CSE, IIT Kharagpur

  5. Contd. • Points to note: • Several files may be opened at the same time. • For the “w” and “a” modes, if the named file does not exist, it is automatically created. • For the “w” mode, if the named file exists, its contents will be overwritten. Sudeshna Sarkar, CSE, IIT Kharagpur

  6. Examples FILE *in, *out ; in = fopen (“mydata.dat”, “r”) ; out = fopen (“result.dat”, “w”); FILE *empl ; char filename[25]; scanf (“%s”, filename); empl = fopen (filename, “r”) ; Sudeshna Sarkar, CSE, IIT Kharagpur

  7. Closing a File • After all operations on a file have been completed, it must be closed. • Ensures that all file data stored in memory buffers are properly written to the file. • General format: fclose (file_pointer) ; FILE *xyz ; xyz = fopen (“test”, “w”) ; ……. fclose (xyz) ; Sudeshna Sarkar, CSE, IIT Kharagpur

  8. Read/Write Operations on Files • The simplest file input-output (I/O) function are getc and putc. • getc is used to read a character from a file and return it. char ch; FILE *fp; ….. ch = getc (fp) ; • getc will return an end-of-file marker EOF, when the end of the file has been reached. • putc is used to write a character to a file. char ch; FILE *fp; …… putc (c, fp) ; Sudeshna Sarkar, CSE, IIT Kharagpur

  9. Example :: convert a text file to all UPPERCASE main() { FILE *in, *out ; char c ; in = fopen (“infile.dat”, “r”) ; out = fopen (“outfile.dat”, “w”) ; while ((c = getc (in)) != EOF) putc (toupper (c), out); fclose (in) ; fclose (out) ; } Sudeshna Sarkar, CSE, IIT Kharagpur

  10. Contd. • We can also use the file versions of scanf and printf, called fscanf and fprintf. • General format: fscanf (file_pointer, control_string, list) ; fprintf (file_pointer, control_string, list) ; • Examples: fscanf (fp, “%d %s %f”, &roll, dept_code, &cgpa) ; fprintf (out, “\nThe result is: %d”, xyz) ; Sudeshna Sarkar, CSE, IIT Kharagpur

  11. Some Points • How to check EOF condition when using fscanf? • Use the function feof if (feof (fp)) printf (“\n Reached end of file”) ; • How to check successful open? • For opening in “r” mode, the file must exist. if (fp == NULL) printf (“\n Unable to open file”) ; Sudeshna Sarkar, CSE, IIT Kharagpur

  12. Example typedef struct { int roll; char dept_code[6]; float cgpa; } STUD; main() { FILE *stud; STUD s; float sum = 0.0; int count = 0; stud = fopen (“stud.dat”, “r”) ; while (1) { if (feof (stud)) break; fscanf (stud, “%d %s %f”, &s.roll, s.dept_code, &s.cgpa); count ++; sum += s.cgpa; } printf (“\nThe average cgpa is %f”, sum/count); fclose (stud); } Sudeshna Sarkar, CSE, IIT Kharagpur

  13. Arguments to main () • Command line arguments are parameters supplied to a program, when the program is invoked. cc myfile.c cc xyz.c -lm netscape www.mailcity.com average 10 20 30 40 50 • How do these parameters get into the program? • Every C program has a main function. • main can take two arguments conventionally called argc and argv. • Information regarding commandline arguments are passed to the program through argc and argv. Sudeshna Sarkar, CSE, IIT Kharagpur

  14. Echoing the command line arguments int main (int argc, char *argv[]) { int i; printf (“argc = %d\n”, argc) ; for (i=0; i<argc; ++i) printf (“argv[%d] = %s\n”, i,argv[i]) ; return 0; } $ a.out how many argc = 3 argv[0] = a.out argv[1] = how argv[2] = many Sudeshna Sarkar, CSE, IIT Kharagpur

  15. Example :: convert a text file to all UPPERCASE, using command line arguments main (int argc, char *argv[ ] { FILE *in, *out ; char c ; in = fopen (argv[1], “r”) ; out = fopen (argv[2], “w”) ; while ((c = getc (in)) != EOF) putc (toupper (c), out); fclose (in) ; fclose (out) ; } Run this program as: a.out old new Sudeshna Sarkar, CSE, IIT Kharagpur

More Related