我有以下带有可变数量参数的 C 函数,它应该char* word
通过哈希表搜索并写入true
或写入false
文件,如果指定,它是第二个参数;否则为stdout
。
如果我指定文件名,它工作正常,问题是当我不指定时(例如find("foo")
)。在这种情况下,它将结果写入一个名为foo
而不是stdout
.
原因是什么?
void find(char* word, ...)
{
va_list list;
char *fname = NULL;
va_start(list, word);
FILE* f;
fname = strdup(va_arg(list, char*));
va_end(list);
if (<condition>) // condition suited for the case in which the file name is received
f = fopen(fname, "a");
else
f = stdout;
if (member(word))
fprintf(f, "True\n");
else
fprintf(f, "False\n");
}
代替<condition>
我已经尝试过fname != NULL
,strlen(fname) > 0
但那些不适用,并且它一直看到fname
没有指定的word
时间。fname
非常感谢您提供的任何帮助。