怎样写一个有可变参数的函数?

来源:本站
导读:目前正在解读《怎样写一个有可变参数的函数?》的相关信息,《怎样写一个有可变参数的函数?》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《怎样写一个有可变参数的函数?》的详细说明。
简介:现代的编译器(例如gcc), 如果打开编译警告参数, 编译器对标准中的可变参数函数(printf, scanf . . 等) 会进行匹配测试。象问题中的源代码, 用“gcc -Wall” 进行编译, 会给出这样的警告: “warning: int format, long int arg (arg 2)”

用 提供的辅助设施。

下面是一个把任意个字符串连接起来的函数, 结果存在malloc 的内存中:

#include /* 说明malloc, NULL, size_t */

#include /* 说明va_ 相关类型和函数*/

#include /* 说明strcat 等*/

char *vstrcat(const char *first, ...)

{

size_t len;

char *retbuf;

va_list argp;

char *p;

if(first == NULL)

return NULL;

len = strlen(first);

va_start(argp, first);

while((p = va_arg(argp, char *)) != NULL)

len += strlen(p);

va_end(argp);

retbuf = malloc(len + 1); /* +1 包含终止符 */

if(retbuf == NULL)

return NULL; /* 出错*/

(void)strcpy(retbuf, first);

va_start(argp, first); /* 重新开始扫描*/

while((p = va_arg(argp, char *)) != NULL)

(void)strcat(retbuf, p);

va_end(argp);

return retbuf;

}

调用如下:

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

提醒:《怎样写一个有可变参数的函数?》最后刷新时间 2024-03-14 00:59:13,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《怎样写一个有可变参数的函数?》该内容的真实性请自行鉴别。