Это программа из книги "C программирование абсолютного руководства для начинающих". Он использует fseek и SEEK_CUR. Когда дело доходит до печати на экран, я могу понять, почему он печатает «Z» правильно, но я не могу понять, почему он печатает «Y» правильно. Для fseek в пределах l oop код записывается как fseek (fptr, -2, SEEK_CUR), поэтому, безусловно, это должно означать, что он перемещается вниз на два байта от 'Z' и должен выводить 'X' вместо 'Y «? Заранее благодарны за Вашу помощь.
// File Chapter29ex1.c
/* This program opens file named letter.txt and prints A through Z into the file.
It then loops backward through the file printing each of the letters from Z to A. */
#include <stdio.h>
#include <stdlib.h>
FILE * fptr;
main()
{
char letter;
int i;
fptr = fopen("C:\\users\\steph\\Documents\\letter.txt","w+");
if(fptr == 0)
{
printf("There is an error opening the file.\n");
exit (1);
}
for(letter = 'A'; letter <= 'Z'; letter++)
{
fputc(letter,fptr);
}
puts("Just wrote the letters A through Z");
//Now reads the file backwards
fseek(fptr, -1, SEEK_END); //minus 1 byte from the end
printf("Here is the file backwards:\n");
for(i= 26; i> 0; i--)
{
letter = fgetc(fptr);
//Reads a letter, then backs up 2
fseek(fptr, -2, SEEK_CUR);
printf("The next letter is %c.\n", letter);
}
fclose(fptr);
return 0;
}