При записи в файл я генерирую несколько нулевых символов/00 каждый раз, когда выполняется новая операция записи. Ниже приведен мой подход к решению этой задачи, но он не работает.Удаление нулевого символа из файла
Содержание файла:
Foo \ 00 \ 00 \ 00 \ 00 \ 00 \ 00
код подход:
int aux;
while((aux = fgetc(fp)) != EOF){
printf("%i\n", aux);
if(fgetc(fp) == '\00'){
fseek(fp, -1, SEEK_SET);
ftruncate(fileno(fp), ftell(fp));
}
}
Как это должно быть сделано?
Проблема в том, что файл довольно длинный, и вставки выполняются постоянно. Поэтому, если он должен перебирать весь файл каждый раз при вставке новой вставки, он потеряет много времени. – qwerty
Можете ли вы не просто устранить NULL во время ввода? Посмотрите данные перед вызовом 'fwrite()' (или любым другим способом, который вы пишете) и соответствующим образом скорректируйте размер? Это, конечно, займет меньше времени, чем просмотр содержимого файла после каждой записи, и если ваши данные имеют значения NULL в середине действительного содержимого в настоящее время, вы действительно создаете гораздо больше работы для себя, чем простой 'ftruncate()' решает , – mah
Да, но даже если я говорю, что это не самый удобный способ для этого примера, мне любопытно узнать также об этом (итерации по файлу). – qwerty