【问题标题】:How can I generate a file with a name of length X in C?如何在 C 中生成长度为 X 的文件?
【发布时间】:2012-09-23 22:58:14
【问题描述】:

我正在编写一个管理纯文本文件的程序的代码。问题是如何使用fopen() 生成一个长度为X 的字符串的文件。

X 的意思是用户只能输入一个字母作为文件名("a.txt"),但他也可以输入一个很长的名称("this_is_my_super_new_file_bla_bla_bla.txt")

我正在尝试用链表来做,但我不知道如何将链表节点的char部分传递给fopen()的参数。

还有其他方法吗?我唯一不想做的就是限制名称的长度。如果我这样做,我必须从一开始就保留内存,这会使我的程序变得更重。

【问题讨论】:

  • 统计列表的长度,malloc一块合适的内存,将列表中的chars一个接一个地复制到数组中,加上一个0-终止符,通过到fopen
  • 更严重的是,如果您可以假设 POSIX,请使用getline 从用户那里获取文件名。如果没有,请滚动您自己的 get-input-and-allocate-as-needed 例程。
  • 不清楚您要做什么?字符串包含什么,文件名应该是什么?
  • 看看你是否能找到一个实现,例如mkstemp 看看他们是怎么做到的?或者如果它可用,为什么不直接使用呢?

标签: c linked-list fopen archive


【解决方案1】:

假设您有一个带有文件名的字符串 (char *),并且您想添加“.txt”扩展名,那么您可以执行以下操作:

char *input = "new_file_name";
char *filename = malloc((strlen(input) + 5) * sizeof(char));
sprintf (filename, "%s.txt", input);
FILE *file = fopen(filename, "w");
free(filename);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多