我有一个奇怪的问题,我正在构建一个C套接字服务器,我的服务器中有两个文件,
在其中一个我要写的文件里,
所以我在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
我想找人帮忙,因为我不懂。。。
最佳答案
假设服务器在运行函数writeFile
之后继续运行,则不会关闭输出文件。输出在缓存中,尚未写入文件。
当程序退出时,文件将自动关闭。这可能是在其他程序中使用此代码时的区别。
在fclose(f);
之后添加fputs("hello",f);
以关闭文件。
如注释中所述,您应该始终检查函数的返回代码并处理错误。