What Is A File?: Related Data Single Unit Store Files To Secondary Storage Intact Shut Down Storage Device Storage Device

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 35

What is a File?

• A file is a collection of related data that a


computers treats as a single unit.
• Computers store files to secondary storage so
that the contents of files remain intact when a
computer shut down.
• When a computer reads a file, it copies the file
from the storage device to memory; when it
writes to a file, it transfers data from memory to
the storage device.
• C uses a structure called FILE (defined in stdio.h)
to store the attributes of a file.

1
■ A file has a beginning and an end.
■ We need a marker to mark the current
position of the file from the beginning (in
terms of bytes) while reading and write
operation, takes place on a file.
■ Initially the marker is at the beginning of the
file. We can move the marker to any other
position in the file.
■ A stream refers to the flow of data (in bytes)
from one place to another (from program to file
or vice-versa).
■ There are two types of streams
▪ Text Stream
▪ It consists of sequence of characters
▪ Each line of characters in the stream may be terminated by a
newline character.
▪ Text streams are used for textual data, which has a
consistent appearance from one environment to another
or from one machine to another
■ Binary Stream
▪ It is a series of bytes.
▪ Binary streams are primarily used for non-textual data,
which is required to keep exact contents of the file.
■ A text file can be a stream of characters that
a computer can process sequentially.
■ It is processed only in forward direction.
■ It is opened for one kind of operation
(reading, writing, or appending) at any give
time.
■ We can read only one character at a time
from a text file.
■ A binary file is a file consisting of collection of
bytes.
Steps in Processing a
File
1.Create the stream via a pointer variable using
the FILE structure:
FILE *p;
2.Open the file, associating the stream name
with the file name.
3. Read or write the data.
4. Close the file.

1
0
The basic file operations are

• Fopen() - open a file- specify how its


opened (read/write) and type
• (binary/text)
• Fclose() - close an opened
• file fread ()- read from a file
• fwrite() - write to a file
Fseek()/fsetpos ()- move a file pointer to
• somewhere in a file.
Ftell()/fgetpos() - tell you where the file
pointer is located.

1
1
■ A file is identified by its name.
■ This name is divided into two parts
▪ File Name
▪ It consists of alphabets and digits.
▪ Special characters are also supported, but it depends on
the operating system we use.
▪ Extension
▪ It describes the file type
■ Before opening a file, we need to declare a
file pointer. A file pointer is a pointer
variable of type FILE, which is defined in the
“stdio.h” header file.
■ A file pointer has the complete information
about file being opened and processed such
as:
▪ Name of file, mode it is opened in, starting buffer address,
a character pointer that points to the character being read.
■ To perform any operation (read or write) on a
file, the file must be brought into memory
from the storage device (hard disk).
■ This process of bringing the copy of the file
from disk (secondary storage) to memory
(main storage) is called opening the file.
• Syntax:
filepointer=fopen(“filename”,“mode”);
File Open Modes

1
5
More on File Open Modes

1
6
Additionally,
• r+ - open for reading and writing, start at
beginning
• w+ - open for reading and writing (overwrite
file)
• a+ - open for reading and writing (append if
file exists)

1
7
FILE *fp;
if(fp = fopen(“myfile.txt”,”r”)) ==NULL)
{
printf(“Error opening a file”);
exit(1);
}
#include<stdio.h>
void main()
{
FILE *fp;
char ch;
fp=fopen(“clear.c”,”r”);
if(fp==NULL)
print(“Unable to open clear.c”);
else
{
do
{
ch = getc(fp);
putchar(ch);
}while(ch!=EOF);
fclose(fp);
}
}
More On : fopen

20
■ Generally, a file contains a large amount of
data.
■ In a large file, it is difficult to detect the end
of file while reading.
■ In order to mark the end of a text file, a
special character EOF is stored at the end.
Closing a File
• When we finish with a mode, we need to
close the file before ending the program or
beginning another mode with that same file.
• To close a file, we use fclose and the
pointer variable:
fclose(spData);

24
fprintf()

Syntax:
fprintf (fp,"string",variables);
Example:
int i = 12;
float x = 2.356;
char ch = 's';
FILE *fp;
fp=fopen(“out.txt”,”w”);
fprintf (fp, "%d %f %c", i, x, ch);

25
fscanf()

Syntax:
fscanf (fp,"string",identifiers);
Example:
FILE *fp;
Fp=fopen(“input.txt”,”r”);
int i;
fscanf (fp,“%d",i);

26
getc()

Syntax:
identifier = getc (file pointer);
Example:
FILE *fp;
fp=fopen(“input.txt”,”r”);
char ch;
ch = getc (fp);

27
putc()
write a single character to the output file,
pointed to by fp.
Example:
FILE *fp;
char ch;
putc (ch,fp);

28
End of File {eof}
• There are a number of ways to test for the end-of-file
condition. Another way is to use the value returned by the
fscanf function:
FILE *fptr1;
int istatus ;
istatus = fscanf (fptr1, "%d", &var) ;
if ( istatus == feof(fptr1) )
{
printf ("End-of-file encountered.\n”) ;
}

29
Reading and Writing Files
#include <stdio.h>
int main ( )
{
FILE *outfile, *infile ;
int b = 5, f ;
float a = 13.72, c = 6.68, e, g ; outfile
= fopen ("testdata", "w") ;
fprintf (outfile, “ %f %d %f ", a, b, c) ;
fclose (outfile) ;
infile = fopen ("testdata", "r") ;
fscanf (infile,"%f %d %f", &e, &f, &g) ;
printf (“ %f %d %f \n ", a, b, c) ;
printf (“ %f %d %f \n ", e, f, g) ;
}

30
Example
#include <stdio.h>
#include<conio.h>
void main()
{
char ch;
FILE *fp;
fp=fopen("out.txt","r");
while(!feof(fp))
{
ch=getc(fp);
printf("\n%c",ch);
}
getch();
}

31
fread ()
Declaration:
size_t fread(void *ptr, size_t size, size_t n, FILE *stream);

Remarks:
fread reads a specified number of equal-sized
data items from an input stream into a block.

ptr = Points to a block into which data is read


size = Length of each item read, in bytes
n = Number of items read
stream = file pointer

32
Example
Example:
#include <stdio.h>
int main()
{
FILE *f;
char buffer[11];
if (f = fopen("fred.txt", “r”))
{
fread(buffer, 1, 10, f);
buffer[10] = 0;
fclose(f);
printf("first 10 characters of the file:\n%s\n", buffer);
}
return 0;
}

33
fwrite()
Declaration:
size_t fwrite(const void *ptr, size_t size, size_t n, FILE*stream);

Remarks:
fwrite appends a specified number of equal-sized data items to an output file.

ptr = Pointer to any object; the data written begins at ptr


size = Length of each item of data
n =Number of data items to be appended
stream = file pointer

34
Example
Example:
#include <stdio.h>
int main()
{
char a[10]={'1','2','3','4','5','6','7','8','9','a'};
FILE *fs;
fs=fopen("Project.txt","w");
fwrite(a,1,10,fs);
fclose(fs);
return 0;
}

35
fseek()
This function sets the file position indicator for the stream pointed to by stream or you can say
it seeks a specified place within a file and modify it.

SEEK_SET Seeks from beginning of file Seeks


SEEK_CUR from current position Seeks
SEEK_END from end of file
Example:
#include <stdio.h>
int main()
{
FILE * f;
f = fopen("myfile.txt", "w");
fputs("Hello World", f);
fseek(f, 6, SEEK_SET); SEEK_CUR, SEEK_END
fputs(" India", f);
fclose(f);
return 0;
}
36
ftell()
offset = ftell( file pointer );

"ftell" returns the current position for input or output on the file
#include <stdio.h>

int main(void)
{
FILE *stream;
stream = fopen("MYFILE.TXT", "w");
fprintf(stream, "This is a test");
printf("The file pointer is at byte %ld\n", ftell(stream));
fclose(stream);
return 0;
}

37

You might also like