file management in c. a file is a collection of related data that a computers treats as a single...

27
File Management in C

Upload: dominick-ruddy

Post on 14-Jan-2016

217 views

Category:

Documents


0 download

TRANSCRIPT

File Management in C

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 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 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 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 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 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 stdio.h• fopen()• fclose()• getc()• putc()• getw()• putw()• fprintf()• fscanf()

File Management in C• fopen() • used to create or open an existing file• Syntax• Filename name 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 pointer= fopen(“filename”,”mode”);

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• 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 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 *p1, *p2;p1 = fopen(“INPUT.txt”, “r”);p2 =fopen(“OUTPUT.txt”, “w”);……..……..fclose(p1); fclose(p2);

pointer can be reused after closing

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

putchar()• syntax:• Eg : putc(c,fp); c char variable , fp file pointer• syntax: • Eg: c=getc(fp); cchar variable, fpfile pointer• file pointer moves by one character position after

every getc() and putc()• getc() returns end-of-file marker EOF when file end

reached

putc(character,file pointer);

Character variable=getc(file pointer);

File Management in CProgram to read/write using getc() & putc()#include <stdio.h>main(){ FILE *f1;

char c;f1= fopen(“INPUT.txt”, “w”); /* open file for writing */

while((c=getchar()) != ‘*’) /*get char from keyboard until ‘*’ */putc(c,f1); /*write a character

to INPUT */

fclose(f1); /* close INPUT */f1=fopen(“INPUT.txt”, “r”); /* reopen file */

while((c=getc(f1))!=EOF) /*read character from file INPUT*/printf(“%c”, c); /* print character to screen

*/fclose(f1);

} /*end main */

File Management in CMulti file Accessing (Copy the content of one file to another)#include <stdio.h>main(){ FILE *f1,*f2;

char c;f1= fopen(“INPUT.txt”, “w”); /* open file for writing */

while((c=getchar()) != ‘*’) /*get char from keyboard until ‘*’ */

putc(c,f1); /*write a character to INPUT */

fclose(f1); /* close INPUT */

f1=fopen(“INPUT.txt”, “r”); /* reopen file */f2=fopen(“copy.txt”,”w”); // open to write datawhile((c=getc(f1))!=EOF) /*read character from file INPUT*/

putc(c,f2); /* copy data to second file */

fclose(f1);fclose(f2);

}

File Management in C• getw() and putw()• getw() read an integer from the file• putw() write an integer into the file• putw() • syntax:• Eg : putc(c,fp); c int variable , fp file pointer• syntax: • Eg: c=getw(fp); cint variable, fpfile pointer• file pointer moves by one character position after every

getw() and putw()• getw() returns end-of-file marker EOF when file end

reached

putw(integer,file pointer);

int variable=getw(file pointer);

C program using getw(), putw()

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

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:• Eg : fscanf(fp,”%d%s”, &a,b);• a int a; b char b[20];• fprintf() • Syntax :• Eg : fprintf(fp,”%d %s’,a,b);• a int a=10; b char b[20]=“ajith”;

fscanf(fp,”control string”,&variable list);

fprintf(fp,”control string”,variable list);

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(f2);fp=fopen(“data.txt”,”r”);fscanf(fp,“%d%s”,&a,name);printf(“\ndata in the file %d %s”,a,name);fclose(fp);getch(); fclose(f2);

}

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

• 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, fpfile pointerThe content of data.txt pop

fwrite ( void * ptr, size, count, FILE pointer);fread ( void * ptr, size, count, FILE pointer);