name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-5572165936844014&dt=1194442938015&lmt=1194190197&format=336x280_as&output=html&correlator=1194442937843&url=file%3A%2F%2F%2FC%3A%2FDocuments%2520and%2520Settings%2Flhh1%2F%E6%A1%8C%E9%9D%A2%2FCLanguage.htm&color_bg=FFFFFF&color_text=000000&color_link=000000&color_url=FFFFFF&color_border=FFFFFF&ad_type=text&ga_vid=583001034.1194442938&ga_sid=1194442938&ga_hid=1942779085&flash=9&u_h=768&u_w=1024&u_ah=740&u_aw=1024&u_cd=32&u_tz=480&u_java=true" frameborder="0" width="336" scrolling="no" height="280" allowtransparency="allowtransparency"> #include <stdio.h>
#include <stdarg.h>
double add_values(char *str, ...)
{
va_list marker;
double result = 0.0;
va_start(marker, str); // mark first additional argument
while (*str) // examine each character in the string
{
if (*str == '%') // if not a %_ format specifier, skip it
{
switch (*(++str)) {
case 'd': result += va_arg(marker, int);
break;
case 'f': result += va_arg(marker, double);
break;
}
}
str++;
}
va_end(marker);
return(result);
}
void main(void)
{
double result;
printf("Result %f/n", add_values("%f", 3.3));
printf("Result %f/n", add_values("%f %f", 1.1, 2.2));
printf("Result %f/n", add_values("%f %d %f", 1.1, 1, 2.2));
printf("Result %f/n", add_values("%f %d %f %d", 1.1, 1, 2.2, 3));
}
本文介绍了一个使用 C 语言实现的可变参数函数 add_values 的具体实现方式。该函数能够解析格式字符串并根据不同的格式说明符(如 %d 和 %f)从传入的可变参数列表中读取整数或浮点数,然后计算并返回它们的总和。通过几个示例展示了如何调用此函数。
1678

被折叠的 条评论
为什么被折叠?



