Использование файловых функций для изменения символов в файле

Итак, используя функции fseek и ftell, я пытаюсь печатать символы по одному, сначала указывая на конец файла с помощью fseek, а затем уменьшая значение ftell, чтобы напечатать последний символ, а затем распечатать предыдущие.

    #include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *fp=NULL;
    char i=0,count=0;

    fp= fopen("note.txt","r");
    if(fp==NULL){   printf("File error");
            return -1;}

    fseek(fp,0,SEEK_END);
    count=ftell(fp);

    while(count){

        count--;
       fseek(fp,count,SEEK_END);
        i=fgetc(fp);
        printf("%c",i);


    }
    fclose(fp);
    fp=NULL;
    return 0;
}

Мой код печатает какие-то странные символы, поэтому он не работает, какие-либо предложения о том, где я ошибаюсь в цикле while?


person dv24680    schedule 07.07.2021    source источник
comment
Здесь: man7.org/linux/man-pages/man3/fseek. 3.html Проверьте, что делает fseek(fp,count,SEEK_END);. Он не делает то, что вы думаете.   -  person 4386427    schedule 07.07.2021
comment
Разве вы не хотите, чтобы SEEK_SET внутри цикла? С SEEK_END кажется, что вы пытаетесь найти конец файла.   -  person Retired Ninja    schedule 07.07.2021
comment
Вы читаете с конца файла (фактически даже за конец файла) снова и снова. Вам нужно прочитать последний символ, затем второй до последнего символа и так далее, пока вы не окажетесь в начале файла.   -  person Jabberwocky    schedule 07.07.2021