Программа на C не сохраняет в файл в цикле
Я написал программу, которая должна работать в цикле inf. В цикле программа должна сохранить некоторые данные в файл и закрыть этот файл. В цикле есть функция сна, которая спит программу на 10 секунд. Затем я хочу проверить, что находится в файле, но он пуст. Если программа работает без цикла, все в порядке
Полный код довольно большой, поэтому я включаю короткую версию
main()
{
FILE* fp;
while(1)
{
fp=fopen(SAVE_FILE, "awt");
if(fp==NULL)
{
printf("Error while opening the save file \n");
}
fprintf(fp, "%s",'this is saved text');
fclose(fp);
sleep(10);
}
}
Есть идеи, как правильно закрыть этот файл, чтобы можно было читать данные во время сна?
(Это работает на Linux)
1 ответ
Ваш код должен быть
int main()
{
FILE* fp;
while(1)
{
fp=fopen(SAVE_FILE, "at");
if(fp==NULL)
{
printf("Error while opening the save file \n");
}
else
{
fprintf(fp, "%s\n","this is saved text");
fclose(fp);
}
sleep(10);
}
}
Вы написали строку для сохранения между '
, Вы должны использовать "
для строковых литералов.
Кроме того, вы можете открыть файл только с опцией.
Вы всегда должны использовать опцию -Wall при компиляции. GCC показывает предупреждение для вашего кода.
test.c:662:9: warning: format ‘%s’ expects argument of type ‘char *’, but argument 3 has type ‘int’ [-Wformat=]
fprintf(fp, "%s",'this is saved text');