Чтение файлов с использованием fseek, fread и указателей

Я пытаюсь манипулировать изображениями с помощью c, и пытаюсь полностью понять fseek() и фред() механизмы.

Зачем fseek не изменил адрес точки, даже это повлияло на fread функционировать, но не изменить адрес точки или увеличить его?

Вот простой пример

int main()
{
    char *x[5]={"axxxx","aaaa","hxxx","rrrrr","xsdsdd"};
    char *point=x;
    char buffer[65]={0};

    fread(buffer,6,1,point);     //Here fread copy "axxx"
    fseek(point,5,SEEK_CUR);    //Here fseek increase point by five bytes
    fread(buffer,6,1,point);   // Here fread do nothing copy nothing
    printf("%s\n",buffer);    // buffer contain "axxx" first fread call
    printf("%x\n",point);    // point address did not changed because of fseek
    printf("%x",x);          //x still the same as point pointer

    return 0;
}

1 ответ

Решение

fread должен взять FILE * аргумент для 4-го параметра. Вы даете "char *".

Что вы ожидаете на самом деле здесь?FILE является непрозрачной структурой, содержащей то, что мы называем "индикатором положения". Это то, что позволяет "двигаться" в файле, fseek а также ftell,

Ваш char * не имеет, ваш код прослушивается.

Правильно открыть файл с fopen,

Другие вопросы по тегам