【发布时间】:2021-08-19 02:08:09
【问题描述】:
我想用自定义文件名创建新文件。我做了这个函数来完成这个任务:
int addfile(char* name)//return 0 if cannot create file
{
FILE* fn = fopen(name, "r");
if(fn == NULL)
{
return 0;
}
fclose(fn);
addtotab(name, 0);
return 1;
}
不幸的是,fn 变量始终为 NULLptr,因此它的早期返回 0。有什么比使用 fopen 更好的主意吗?
【问题讨论】:
-
你认为
"r"为什么会创建一个新文件? -
查看本页顶部的模式表,并选择一个将在文件不存在时创建文件的模式。 en.cppreference.com/w/c/io/fopen
-
好吧,我很笨,没听懂,我把 r 期望 w,谢谢帮助
-
使用
fopen在技术上没有任何问题,假设您以正确的模式打开它。fopen的小问题是它为缓冲 IO 设置了一个缓冲区。这通常是一件好事,可以让您轻松进行高效的读/写。但是由于您在没有读/写的情况下关闭文件,因此不需要任何缓冲,因此使用较低级别的open/close可能会更有效。这是轻微的吹毛求疵,我写这个只是因为你要求更好的方法。
标签: c large-file-support