C程序不会在while循环中保存到文件

时间:2016-04-28 10:18:13

标签: c linux fopen fclose

我编写了o程序,必须在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 个答案:

答案 0 :(得分: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');