【问题标题】:C - creating new file with custom filenameC - 使用自定义文件名创建新文件
【发布时间】: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


【解决方案1】:

你应该改变

FILE* fn = fopen(name, "r");

FILE* fn = fopen(name, "w");

根据https://man7.org/linux/man-pages/man3/fopen.3.html 的文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-09
    • 2010-12-03
    • 2021-06-18
    • 2019-08-15
    • 1970-01-01
    相关资源
    最近更新 更多