首页 > 解决方案 > 无法写入文件

问题描述

我有一个奇怪的问题,我正在构建一个 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

我很想得到一些帮助,因为我一无所知...

标签: cfilesockets

解决方案


假设您的服务器在运行函数后继续运行,您writeFile不会关闭输出文件。输出在缓存中,尚未写入文件。

当您的程序退出时,文件会自动关闭。这可能是您在其他程序中使用此代码时的区别。

添加fclose(f);之后fputs("hello",f);以关闭文件。

正如评论中提到的,您应该始终检查函数的返回码并处理错误。


推荐阅读