Given a file F, the task is to write C program to print any range of bytes from the given file and print it to a console.
Functions Used:
- fopen(): Creation of a new file. The file is opened with attributes as “a” or “a+” or “w” or “w++”.
- fgetc(): Reading the characters from the file.
- fclose(): For closing a file.
Approach:
- Initialize a file pointer, say File *fptr1.
- Initialize an array to store the bytes that will be read from the file.
- Open the file using the function fopen() as fptr1 = fopen(argv[1], “r”).
- Iterate a loop until the given file is read and stored, the characters are scanned in the variable, say C using the fgetc() function.
- Store each character C extracted in the above step, to a new string S and print that string using the printf() function.
- After completing the above steps, close the file using the fclose() function.
Below is the implementation of the above approach:
C
// C program to read particular bytes // from the existing file #include <stdio.h> #include <stdlib.h> // Maximum range of bytes #define MAX 1000 // Filename given as the command // line argument int main( int argc, char * argv[])
{ // Pointer to the file to be
// read from
FILE * fptr1;
char c;
// Stores the bytes to read
char str[MAX];
int i = 0, j, from, to;
// If the file exists and has
// read permission
fptr1 = fopen (argv[1], "r" );
if (fptr1 == NULL) {
return 1;
}
// Input from the user range of
// bytes inclusive of from and to
printf ( "Read bytes from: " );
scanf ( "%d" , &from);
printf ( "Read bytes upto: " );
scanf ( "%d" , &to);
// Loop to read required byte
// of file
for (i = 0, j = 0; i <= to
&& c != EOF;
i++) {
// Skip the bytes not required
if (i >= from) {
str[j] = c;
j++;
}
// Get the characters
c = fgetc (fptr1);
}
// Print the bytes as string
printf ( "%s" , str);
// Close the file
fclose (fptr1);
return 0;
} |
Output: