Вероятно, проблема в том, что вы не говорите C на самом деле записать данные на диск. Обычно это происходит автоматически при закрытии файла и может происходить автоматически в другое время (например, при заполнении внутренних буферов).
Похоже, вы пишете всего несколько байтов, а затем проверяете файл, чтобы увидеть, что произошло. Если это так, ваша программа может хранить эти байты во внутреннем буфере, прежде чем записывать их на диск. Это делает это для повышения производительности в общем случае - обычно вам не требуется доступ к диску для каждого отдельного оператора печати.
Одним из решений, как предлагают другие ответы, является вызов fflush. Это «сбросит» все буферизованные данные на диск. Есть и другие решения, такие как отключение буферизации, но вызов fflush - лучший первый шаг, так как вы новичок в программировании.
Для получения дополнительной информации вот ссылка на вики-книгу о файловом вводе / выводе с C. Вы можете перейти прямо к разделу на fflush , хотя вы можете прочитать вводные абзацы, чтобы получить немного больше понимания.