我有一个奇怪的问题,我正在构建一个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
我很乐于助人,因为我一无所知...
答案 0 :(得分:3)
假设服务器在运行功能writeFile
后仍保持运行,则不会关闭输出文件。输出位于缓存中,尚未写入文件。
程序退出时,文件自动关闭。在其他程序中使用此代码时,可能有区别。
在fclose(f);
之后添加fputs("hello",f);
,以关闭文件。
如评论中所述,您应始终检查函数的返回码并处理错误。