gpt4 book ai didi

通过 C 函数创建和返回文件

转载 作者:行者123 更新时间:2023-12-04 05:20:51 24 4
gpt4 key购买 nike

我要做的是编写一个函数来创建一个文件,用数据填充它并将文件返回给 main()。问题是 - “返回文件”的正确方法是什么。我应该传递指针/文件描述符还是忽略所有这些并使用文件名?

编辑:做正确的方式(我希望):

int mkrandfile(const char *name, int range, int qnt) 
{
FILE *afile;
int i = 0;

if (afile = fopen(name, "w+"))
{
while((i <= qnt) && fprintf(afile, "%d ", rand() % range - range/2))
i++;
fclose(afile);
if (i != qnt + 1)
return -2;
}
else
return -1;
}

最佳答案

你是正确的,返回 afile从那个函数是错误的。一旦文件关闭,该文件句柄就不再有效。调用者使用它会导致未定义的行为。

虽然从模块化的角度来看,这可能不是最好的主意,但您可以让文件保持打开状态,然后返回句柄。但我认为以下之一可能会更好:

  • 将打开的文件句柄传递给函数(让调用者打开和关闭它)。
  • 让调用者自己再次打开文件。

  • 考虑到操作系统的文件缓存(如果在此处适用)时,第一个选项可能更有效。

    关于通过 C 函数创建和返回文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13713602/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com