Невозможно записать в файл

У меня странная проблема, я строю сервер сокета C, и у меня есть 2 файла, включенные в мой сервер,

в одном из файлов, которые я пытаюсь записать в файл, который я создаю, поэтому у меня есть server.c в моем server.c У меня есть Dir.c, который содержит только эту функцию:

void writeFile(){
    FILE* f;
    f=fopen("test.txt","w");
    fputs("hello",f); 
}

теперь, черт возьми, он создает файл, но когда я открываю его пустым, но когда я копирую этот код в другой файл и запускаю его там, я получаю свой файл со значением hello, записанным в нем, у меня нет абсолютно никакого Идея, почему это происходит, вот как я собираю свою программу:

 gcc   Dir.c server.c -lpthread -o server

Я хотел бы помочь, потому что я невежественен ...

Всего 1 ответ


Предполагая, что ваш сервер продолжает работать после запуска вашей функции writeFile вы не закрываете выходной файл. Вывод находится в кеше и еще не записан в файл.

Когда ваша программа выходит, файл автоматически закрывается. Это, вероятно, разница, когда вы используете этот код в какой-то другой программе.

Добавьте fclose(f); после fputs("hello",f); закрыть файл.

Как уже упоминалось в комментариях, вы всегда должны проверять код возврата функций и обрабатывать ошибки.