File Management in C File Management in C

  • Slides: 27
Download presentation
File Management in C

File Management in C

File Management in C • A file is a collection of related data that

File Management in C • A file is a collection of related data that a computers treats as a single unit. • File is a collection of data stored permanently on secondary storage device. • Files are 2 types • Text files • Binary files

File Management in C • Text file • Collection of characters that a computer

File Management in C • Text file • Collection of characters that a computer can process sequentially • Only in forward direction • A text files is usually opened for only one kind of operation (reading, writing or appending) at a time • Text file can only read or write one character at a time • Newline character may be converted

File Management in C • Binary file • Similar to text file • It

File Management in C • Binary file • Similar to text file • It is a collection of bytes (in c bytes and characters are same) • No special processing of the data occurs • It may be read from or write to in any manner • Can processed sequentially or randomly • Random accessing involves moving the current file position to an appropriate place in the file before reading or writing data.

File Management in C • Basic file operations – Naming a file – Opening

File Management in C • Basic file operations – Naming a file – Opening a file for reading only – Opening a file for writing only – Closing the file

File Management in C • File name • May contain two parts – Primary

File Management in C • File name • May contain two parts – Primary part – Extension part – Primary part contains maximum 8 characters – Extension part contains maximum 3 characters • Examples: a. out, prog. c, temp, text. out

File Management in C • FILE Pointer • Which used to manipulate the file

File Management in C • FILE Pointer • Which used to manipulate the file pointers(read pointer & write pointer) • File pointer can be declared • FILE *pointer; • Eg • FILE *fp • fp – contains all information about file – Communication link between system and program

File Management in C • • • File handling functions: included in the header

File Management in C • • • File handling functions: included in the header file stdio. h fopen() fclose() getc() putc() getw() putw() fprintf() fscanf()

File Management in C • fopen() • used to create or open an existing

File Management in C • fopen() • used to create or open an existing file • Syntax file pointer= fopen(“filename”, ”mode”); • • Filename of the file Mode : takes 3 values • • • r opening the file for reading only w opening the file for writing only a opening the file in append mode Eg Fp=fopen(“popo. txt”, ”w”); opening the file popo. txt for writing data

File Management in C • File mode • When a file opened in r

File Management in C • File mode • When a file opened in r mode if the file already exist, the content will not lost, read data from beginning of the file (BOF) • When a file opened in w mode if the file already exist, the content will lost, write date from the beginning of the file (BOF) • When a file opened in a mode if the file already exist, the content will not lost, add more data at end of the file (EOF)

File Management in C

File Management in C

File Management in C • Additional Modes • r+ (read+write) open to beginning for

File Management in C • Additional Modes • r+ (read+write) open to beginning for both reading/writing • In this mode the previous record of file is not deleted • w+ (write+read) same as w, we can also read record which is stored in the file • a+ (append+read) same as ‘a’, we can also read record which is stored in the file

File Management in C • fclose() • File must be closed as soon as

File Management in C • fclose() • File must be closed as soon as all operations on it completed • To ensures – All outstanding information associated with file flushed out from buffers – All links to file broken – Accidental misuse of file prevented • If want to change mode of file, then first close and open again

File Management in C fclose() Syntax: fclose(file_pointer); Example: FILE *p 1, *p 2; p

File Management in C fclose() Syntax: fclose(file_pointer); Example: FILE *p 1, *p 2; p 1 = fopen(“INPUT. txt”, “r”); p 2 =fopen(“OUTPUT. txt”, “w”); ……. . fclose(p 1); fclose(p 2); pointer can be reused after closing

File Management in C • • • getc() – read a character from the

File Management in C • • • getc() – read a character from the file putc() – write a character into the file getw() – read integer from the file putw() – write integer into the file fprintf() – write set of data values into the file fscanf() – read set of data values from the file

File Management in C • handle one character at a time like getc() and

File Management in C • handle one character at a time like getc() and putchar() • syntax: putc(character, file pointer); • Eg : putc(c, fp); c char variable , fp file pointer • syntax: Character variable=getc(file pointer); • Eg: c=getc(fp); c char variable, fp file pointer • file pointer moves by one character position after every getc() and putc() • getc() returns end-of-file marker EOF when file end reached

File Management in C Program to read/write using getc() & putc() #include <stdio. h>

File Management in C Program to read/write using getc() & putc() #include <stdio. h> main() { FILE *f 1; char c; f 1= fopen(“INPUT. txt”, “w”); /* open file for writing */ while((c=getchar()) != ‘*’) /*get char from keyboard until ‘*’ */ putc(c, f 1); /*write a character to INPUT */ fclose(f 1); f 1=fopen(“INPUT. txt”, “r”); /* close INPUT */ /* reopen file */ while((c=getc(f 1))!=EOF) /*read character from file INPUT*/ printf(“%c”, c); /* print character to screen */ fclose(f 1); } /*end main */

File Management in C Multi file Accessing (Copy the content of one file to

File Management in C Multi file Accessing (Copy the content of one file to another) #include <stdio. h> main() { FILE *f 1, *f 2; char c; f 1= fopen(“INPUT. txt”, “w”); /* open file for writing */ while((c=getchar()) != ‘*’) /*get char from keyboard until ‘*’ */ putc(c, f 1); /*write a character to INPUT */ fclose(f 1); /* close INPUT */ f 1=fopen(“INPUT. txt”, “r”); /* reopen file */ f 2=fopen(“copy. txt”, ”w”); // open to write data while((c=getc(f 1))!=EOF) /*read character from file INPUT*/ putc(c, f 2); /* copy data to second file */ fclose(f 1); fclose(f 2); }

File Management in C getw() and putw() getw() read an integer from the file

File Management in C getw() and putw() getw() read an integer from the file putw() write an integer into the file putw() syntax: putw(integer, file pointer); Eg : putc(c, fp); c int variable , fp file pointer syntax: int variable=getw(file pointer); Eg: c=getw(fp); c int variable, fp file pointer moves by one character position after every getw() and putw() • getw() returns end-of-file marker EOF when file end reached • • •

C program using getw(), putw() main() { int i; FILE *f 1; f 1

C program using getw(), putw() main() { int i; FILE *f 1; f 1 = fopen("int_data. txt", "w"); // open files for(i=10; i<15; i++) // write integers to files { putw(i, f 1); } fclose(f 1); f 1 = fopen("int_data. txt", "r"); while((i=getw(f 1))!=EOF) { printf(“%dn", i); } fclose(f 1); getch(); }

File Management in C • • • fscanf() fprintf() fscanf() : read mixed type

File Management in C • • • fscanf() fprintf() fscanf() : read mixed type of data from the file fprintf() : write mixed type of data into the file fscanf() syntax: fscanf(fp, ”control string”, &variable list); Eg : fscanf(fp, ”%d%s”, &a, b); a int a; b char b[20]; fprintf() Syntax : fprintf(fp, ”control string”, variable list); Eg : fprintf(fp, ”%d %s’, a, b); a int a=10; b char b[20]=“ajith”;

C program using fscanf(), fprintf() main() { int a; char name[20]; FILE *fp; fp=fopen(“data.

C program using fscanf(), fprintf() main() { int a; char name[20]; FILE *fp; fp=fopen(“data. txt”, ”w”); printf(“enter no and aname”); scanf(“%d%s”, &a, name); fprintf(fp, ”%d %s”, a, name); fclose(f 2); fp=fopen(“data. txt”, ”r”); fscanf(fp, “%d%s”, &a, name); printf(“ndata in the file %d %s”, a, name); fclose(fp); getch(); fclose(f 2); }

Binary files (Random files) • Jump to a given position (byte number) in a

Binary files (Random files) • Jump to a given position (byte number) in a file without reading all the previous data • For random accessing files, different functions are • Ftell() return the position of file pointer • Rewind() move the file pointer to BOF • Fseek() move the file pointer to the desire location

Binary files (Random files) ftell(fp) returns current byte position in file rewind(fp) resets position

Binary files (Random files) ftell(fp) returns current byte position in file rewind(fp) resets position to start of file fseek (file-pointer, offset, position); position: 0 (beginning), 1 (current), 2 (end) offset: number of locations to move from position Example: fseek(fp, -m, 1); // move back by m bytes from current position fseek(fp, m, 0); //move to m byte • fseek(fp, -10, 2); // move 10 bytes backword • •

Random access to files • • • • • • main() { FILE *fp;

Random access to files • • • • • • main() { FILE *fp; char c; clrscr(); fp=fopen("check. txt", "w"); while((c=getchar())!='*') { putc(c, fp); } printf("n position of file pointer %d", ftell(fp)); rewind(fp); printf("n position of file pointer %d", ftell(fp)); fclose(fp); fp=fopen("check. txt", "r"); while((c=getc(fp))!=EOF) { printf("%c", c); fseek(fp, 2, 1); } getch(); }

File Management in C • fread() fwrite) • Used for reading/writing block of data

File Management in C • fread() fwrite) • Used for reading/writing block of data from/to the file. • These functions accept four arguments. • The first argument is Pointer to a block of memory used for reading/writing the data. The secong argument is Size, in bytes, of each element to be read/write • The third argument is Number of elements, each one with a size of size bytes. • The fourth argument is file pointer

File Management in C • fread() fwrite) • Syntax fwrite ( void * ptr,

File Management in C • fread() fwrite) • Syntax fwrite ( void * ptr, size, count, FILE pointer); fread ( void * ptr, size, count, FILE pointer); • Eg char c[20]=“popo”; • FILE *fp; fp=fopen(“data. txt”, ”w”); fwrite(c, 1, 3, fp); c pointer , 1 size of each char 3 no of char to write, fp file pointer The content of data. txt pop