Невозможно записать в файл - PullRequest
0 голосов
/ 17 мая 2019

У меня странная проблема, я создаю сервер сокетов 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 Ответ

3 голосов
/ 17 мая 2019

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...