【发布时间】: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