Программа на 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');
Другие вопросы по тегам