270 likes | 307 Views
FILES. Explain files. Discuss text File and binary File. Use basic file Operations & functions. Explain file pointer. Explain Formatted/Unformatted I/O Statements in File. Discuss current active pointer. Data files Can be created, updated, and processed by C programs
E N D
Explain files • Discuss text File and binary File • Use basic file Operations & functions • Explain file pointer • Explain Formatted/Unformatted I/O Statements in File • Discuss current active pointer
Data files • Can be created, updated, and processed by C programs • Are used for permanent storage of large amounts of data • Storage of data in variables and arrays is only temporary.
Files • A file may be anything from a disk file to a terminal or a printer. • A file is associated with a stream by performing an open operation and is disassociated from a stream by a close operation. • All files are automatically closed when the program, using them, terminates, normally by main() returning to the operating system or by a call to exit(). • Files are not closed when a program crashes
File : A file is a place on the disk where a group of related data is stored simply defined as “Collection of related information”
Difference between text and binary file • A binary file is treated as raw data and read byte-by-byte. The binary file do not store any special character of end-of-line. • A text file is considered to contain lines of text that are separated by some end-of-line markings.
Basic file operations • Naming a file • Opening a file • Reading data from a file • Writing data to a file • Closing a file
Using feof() • The Syntax of this Function is : int feof(FILE *fp); • Returns true if end-of-file indicator (no more data to process) is set for the specified file
File Pointer It is a pointer to a structure which contains the information about the file Syntax : FILE *file pointername; FILE *fp; For Example : Opening a File pointername = fopen(“filename”, “file mode”); Syntax : fp=fopen(“emp.txt”,”w”); For Example :
Closing a File Syntax : fclose(filepointer name); For Example : fclose(fp);
File I/O Operations • Unformatted file I/O functions fputc() & fgetc() – Char. Orient. file I/O Operations fputs() & fgets() – String Orient. file I/O Operations • Formatted file I/O functions fprintf() and fscanf() – mixed data oriented file I/O Operations
Writing a character • The function used for writing characters to a file, that was • previously opened using fopen(), is fputc(). • Syntax : fputc(ch, FILE *fp); Reading a character • The fgetc() function is used for reading characters from a file • opened in read mode, using fopen(). fgetc(FILE *fp); • Syntax :
Character Oriented Functions To create a file consisting of characters: fputc() #include<stdio.h> void main() { FILE *fp; (fp is a pointer to FILE type) char c; fp=fopen(“sample.txt”,”w”); printf(“Keep typing characters. Type ‘q’ to terminate”); c=getchar(); while(c!=‘q’) { Output: fputc(c,fp); Keep typing characters. Type ‘q’ to terminate c=getchar(); artyhefhfgfgrq } fclose(fp); }
To read a file consisting of characters: fgetc() #include<stdio.h> void main() { FILE *fp; char c; fp=fopen(“sample.txt”,”r”); printf(“The contents of the file ‘sample’ are:\n”); while(!feof(fp)) { Output: c=fgetc(fp); The contents of the file ‘sample’ are: putchar(c); artyhefhfgfgrq } fclose(fp); }
String Input / Output • fputs() and fgets(), which write and read character strings to and from disk file. • The Syntax for the above functions are - fputs(buffer, FILE *fp); buffer is the name of the characterarray fgets( buffer, size, FILE *fp); Size is an integer value
String Oriented Functions To create a file consisting of strings: fputs() #include<stdio.h> void main() { FILE *fp; char name[20]; int i,n; fp=fopen(“names.txt”,”w”); printf(“Enter the number of names\n”); scanf(“%d”,&n); printf(“Enter %d names\n”,n); for(i=1;i<=n;i++) Output: Enter no. of names: 4 { Enter 4 names gets(name); Joel fputs(name,fp); Ida } Mary fclose(fp); Jeba }
To read a file consisting of strings: fgets() #include<stdio.h> void main() { FILE *fp; char name[20]; fp=fopen(“names.txt”,”r”); printf(“Strings are: \n”); while(!feof(fp)) Output: { Strings are: fgets(name,20,fp); Joel puts(name); Ida printf(“\n); Mary } Jeba fclose(fp); }
fprintf() and fscanf() • These functions are similar to printf() and scanf() except that they operate with files. • Syntax fprintf() fprintf(FILE *fp, “Control string”, arguments-list); fscanf() fscanf(FILE *fp, “control string”,argument-list);
Mixed data oriented functions To Create a file consisting of employees’ details: fprintf() #include<stdio.h> struct emp { int empno; char name[20]; float salary; }e; void main() Output: { Enter the number of employees FILE *fp; 1 int i,n; Enter 1 Employees’ details fp=fopen(“emp.txt”,”w”); 123 Joel 1234 printf(“Enter the number of employees\n”); scanf(%d”,&n); printf(“Enter %d Employees’ Details\n”,n); for (i=1;i<=n;i++) { scanf(“%d%s%f”,&e.empno,e.name,&e.salary); fprintf(fp,”%d%s%f”, ”,e.empno,e.name,e.salary); } fclose(fp); }
To read a file consisting of employees’ details: fscanf() #include<stdio.h> struct emp { int empno; char name[20]; float salary; }e; void main() { FILE *fp; Output: int i,n; Contents of the file emp.txt fp=fopen(“emp.txt”,”r”); 123 Joel 1234 printf(“Contents of the file emp.txt”); while(!feof(fp)) { fscanf(fp,“%d%s%f”,&e.empno,e.name,&e.salary); Printf(”%d%s%f”, ”,e.empno,e.name,e.salary); } fclose(fp); }
rewind() function • The syntax for rewind() is : rewind(fp); • The prototype for the rewind() is available in stdio.h • The rewind() function resets the file position indicator to the beginning of the file.
Current File Pointer Position • In order to keep track of the position where I/O operations take place a pointer is maintained in the file structure. • The current location of the current active pointer can be found with the help of the ftell() function long int ftell( FILE *fp);
Setting Current File Pointer Position • The fseek() function repositions the filepointer by a specified number of bytes from the start, the current position or the end of the stream depending upon the position specified in the fseek() function. • The Syntax of the fseek() function is - int fseek( FILE *fp, long int offset, int origin); • Here the offset is the number of bytes beyond the file location given by origin.
Setting Current File Pointer Position • The origin indicates the starting position of the search and must have the value of either 0 ,1 or 2.
The fread() and fwrite() function • Used to read and write an entire block of data to and from a file • The Syntax for these functions are - fread() size_t fread(void *buffer, size_t num_bytes, size_t count FILE *fp); fwrite() size_t fwrite(const void *buffer, size_t num_bytes, size_t count FILE *fp);