Чтобы избежать появления NULL-символов в начале строки при использовании функций ftruncate и fwrite, можно использовать другой подход:
1. Записать нужные данные в файл с помощью функции fwrite.
2. Закрыть файл.
3. Открыть файл в режиме "чтение и запись" (r+) и установить указатель файла на начало с помощью функции fseek(file, 0, SEEK_SET).
4. Вызвать функцию ftruncate для обрезания файла до размера, соответствующего записанным данным.
Таким образом, при обрезании файла функцией ftruncate в начале строки не должно появляться NULL-символов или нулевых байтов.