C программирование fwrite переходит в конец файла

Я пишу модуль C и столкнулся с интересной проблемой, которую я никогда раньше не видел.

// Many other operations before this point
fseek(samples_file, 0, SEEK_SET);
printf("ftell A1 %llu\n", ftell(samples_file));
count = fwrite(channel_buffer+chan_type.size*set_index, 1, chan_type.size, samples_file);
printf("count %llu\n", count);
printf("ftell A2 %llu\n", ftell(samples_file));
// Many more operations to come after this point

Когда я запускаю модуль, я получаю распечатку, подобную следующей:

ftell A1 0
count 8
ftell A2 6018

Я установил указатель файла в самом начале файла. Когда я записываю некоторые данные, они должны записывать данные в той позиции, которую я ищу, и затем увеличивать позицию файла на количество записанных байтов (в данном случае 8). Тем не менее, когда я делаю ftell, кажется, что позиция внезапно подскочила до 6018 (который, как оказалось, является исходным размером файла плюс 8).

Почему это происходит и как я могу предотвратить это поведение?

3

Решение

Похоже, файл был открыт в режиме добавления. Проверьте, что нет "a" во втором аргументе fopen(),

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]