我正在编写一个 C 程序,它将采用可变数量的命令行参数。然后,我需要获取这些参数并将它们传递到一个函数中,该函数将可变数量的文件名作为单独的参数(使用 va_arg 获取函数内的参数),原型为:
void FindFile(char *filename1, ...);
我的 FindFile 实现很好。我的问题是,如何在主方法的“char *argv[]”中获取可变数量的参数,并在调用 FindFile 时将它们用作参数?
这是对类的赋值,因此无法更改 FindFile 原型。我一直在寻找使这项工作可行的方法,只找到一个答案,那就是这是不可能做到的。事实真的是这样吗?这是我的教授给出的确切规范,所以我认为这是可能的,但确切的方法在课堂上没有讨论。
这是什么not可以做的(至少在 K&R、ansi-c 和 c99 中并且禁止依赖于实现的技巧)是在运行时将选定的命令行参数附加到某种参数列表并将其传递给您的函数。太糟糕了,因为这是我首先想到的。
这使得你的问题之一就是弄清楚你要做什么can做。例如,您可以调用(给定的 varidac 函数为)FindFile(fname, argc, argv);
每一次。编写这样的代码而不是仅仅给出是很愚蠢的(真的,非常,非常愚蠢)FindFile
固定签名,但给定的可变参数版本FindFile
可以编写来很好地管理它。
如果您只想传递一些命令行参数,您可以创建一个新的char*[]
仅包含您想要的内容并将其传递进去。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)