This example opens a file for reading. It reads enough characters to fill half of the buffer and prints out the position in the stream and the buffer.
#include <stdio.h>
#define FILENAME "myfile.dat"
#define NUM_ALPHA 26 #define NUM_CHAR 6
int main(void)
{
FILE *stream;
int i;
char ch;
char buffer[NUM_ALPHA];
long position;
if (( stream = fopen("FILENAME", "r")) != NULL )
{
/* read into buffer */
for ( i = 0; ( i < NUM_ALPHA/2 ) &&
((buffer[i] = fgetc(stream)) != EOF ); ++i )
if (i==NUM_CHAR-1) /* We want to be able to position the */
/* file pointer to the character in */
/* position NUM_CHAR */
position = ftell(stream);
printf("Current position of the file is stored.\n");
}
buffer[i] = '\0';
fseek(stream, position, SEEK_SET);
ch = fgetc (stream); /* get the character at position NUM_CHAR */
printf("The character in position NUM_CHAR is '%c'.\n", ch);
fclose(stream);
}
else
perror("Error opening myfile");
return 0;
}