gpt4 book ai didi

c - comp.lang.c 常见问题解答中有错误?计算可变格式字符串的长度

转载 作者:行者123 更新时间:2023-11-30 21:15:42 25 4
gpt4 key购买 nike

问题 15.4:varargs/varargs1.html

在示例代码中,他们似乎认为如果到达列表末尾,则 ‍‍‍va_arg 返回 NULL:

len = strlen(first);

va_start(argp, first);

while((p = va_arg(argp, char *)) != NULL)
len += strlen(p);

va_end(argp);

但是 va_arg 的文档明确指出情况并非如此,并且 va_arg 会很高兴地越过列表的末尾。

这与我尝试模仿上述代码并因此出现段错误的经验一致。

最佳答案

事实上,va_arg 没有提到在列表的第 nd 处返回 NULL

If there is no next argument, or if type is not compatible with the type of the actual next argument (as promoted according to the default argument promotions), random errors will occur.

但常见问题解答说:

A call to vstrcat looks something like

char *str = vstrcat("Hello, ", "world!", (char *)NULL);

这意味着他们假设调用者将传递 NULL 作为最后一个参数来表示列表结束

关于c - comp.lang.c 常见问题解答中有错误?计算可变格式字符串的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6479621/

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