实现环境:Fedora12 + gcc

任务:用C语言实现一个参数可变的函数,以方便输出。

源代码如下:

#include <stdio.h>
#include <stdarg.h>
#include <string.h>
int sum(int data, ...)
{
int i = data, s = 0;
va_list vl;
va_start(vl, data);
while(i != -1)
{
s += i;
i = va_arg(vl, int);
}
va_end(vl);
return s;
}
char smessage[1024] = {0};
int display(const char *fmt, ...)
{
va_list args;
int n;
va_start(args, fmt);
n = vsprintf(smessage, fmt, args);
va_end(args);
return n;
}
int main()
{
int s = sum(1, 3, 4, 5, -1);
printf("sum = %d\n", s);
int ret = display("Here: %s, %d, %.2f, %s", "hello", 45, 33.6535896, "How do you do");
printf("ret = %s(%d)\n", smessage, ret);
return 0;
}

输出如下:

sum = 13
ret = Here: hello, 45, 33.65, How do you do(37)

关键点还是调用了vsprintf,另外就是要了解va_start(), va_end()以及va_list的使用!

我的C语言可变参数的实现相关推荐

  1. c语言怎样获得函数内参数的值_C语言可变参数函数的实现原理

    在本人的<C语言可变参数函数的实现方法>一文中,介绍了如何建立自己的可变参数函数. 下面继续介绍可变参数函数的实现原理. 在汇编语言程序设计中,详细介绍了子程序的实现思想: (1)子程序只 ...

  2. C语言可变参数函数_初探

    一.什么是可变参数函数 C语言允许定义参数数量可变的函数,这称为可变参数函数(variadic function).这种函数需要固定数量的强制参数,后面是数量可变的可选参数. 其中,强制参数必须至少一 ...

  3. C语言可变参数函数(printf/scanf)

    C 语言允许定义参数数量可变的函数,这称为可变参数函数(variadic function).这种函数需要固定数量的强制参数(mandatory argument),后面是数量可变的可选参数(opti ...

  4. c语言 可变参数的宏,可变参数的宏__ VA_ARGS__的用法

    回顾 在[ANSIC几种特殊的标准定义]中我们讲述了比较常用的几项: __FILE__:正在编译文件的路径及文件名 __LINE__:正在编译文件的行号 __DATE__:编译时刻的日期字符串 如&q ...

  5. next用法C语言,C语言可变参数的使用

    先来个简单的例子:#include #include void test0(int num,...) { va_list ap; va_start(ap, num); while(num--) { p ...

  6. 参数控制c语言代码走向,C语言可变参数完全解读

    本文转自:http://www.cnblogs.com/wangyonghui/archive/2010/07/12/1776068.html 一.是什么 我们学习C语言时最经常使用printf()函 ...

  7. c 语言 可变参数前要加形参,C/C++中可变参数的用法详细解析

    可变参数即表示参数个数可以变化,可多可少,也表示参数的类型也可以变化,可以是int,double还可以是char*,类,结构体等等.可变参数是实现printf(),sprintf()等函数的关键之处, ...

  8. 关于C语言可变参数函数的一些研究和总结

    可变参数函数是指函数参数的个数.类型等是不固定的,需要在用户调用过程中,根据实际传入的参数来确定其类型.个数等信息.例如:可变参数函数printf可谓是在C开发过程中使用最多的标准输出库函数之一,因此 ...

  9. C语言可变参数函数的使用及相关函数介绍

    By qianghaohao(Xqiang) 在C语言中当一个函数参数无法列举出来,或者参数个数  不确定,这时我们将函数声明为可变参数的形式,根据需  要传适当个数的参数.举例如下: int fun ...

  10. 编写可变参数函数 c语言,C语言可变参数函数的编写

    1. 引言 C语言我们接触的第一个库函数是 printf("hello,world!");其参数个数为1个. 然后,我们会接触到诸如: printf("a=%d,b=%s ...

最新文章

  1. 《Hack与HHVM权威指南》——1.5.2 覆盖方法的类型
  2. linux图形化卡在开机界面,linux怎么在开机时进入图形界面
  3. 随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )的公式对比、实现对比
  4. awk使用shell中的变量
  5. 2017年12月英语四级翻译预测
  6. 使用bootstrap的dropdown部件时报错:error:Bootstrap dropdown require Popper.js
  7. 【转】继承过程中 父类子类的 字段方法 内存分配 (非java语言)
  8. 三万字速通SSM框架入门知识点,快速上手CRUD
  9. Tell me why -- Declan Galbraith
  10. Multi-statement transaction required more than ‘max_binlog_cache_size‘ bytes of storage
  11. 日语学习|如何快速有效地记忆日语五十音图?
  12. Informatica的元数据和数据血缘关系
  13. EximiousSoft Logo Designer (Crack)版,轻松设计logo的软件
  14. 【高项】沟通管理(ITTO)
  15. 晶联讯LCD(JLX128128G-610-PC)使用教程
  16. Zhong__PyCharm配置豆瓣源提升插件、依赖安装速度
  17. 一款最好用的windows文件管理器
  18. word文档找不到smartart_图文详解Word文档插入SmartArt图形的方法
  19. 小程序源码:可以刷短视频的去水印工具微信小程序
  20. echo命令详解 (二)

热门文章

  1. Md5 Md5实现原理
  2. explorer.exe被删除了怎么办?
  3. 高斯金字塔 拉普拉斯金字塔_金字塔学入门指南
  4. leetcode 406. 根据身高重建队列(贪心算法)
  5. leetcode50. Pow(x, n)(快速幂)
  6. 如何设置Windows版Go —快速简便的指南
  7. 2016版单词的减法_在2016年最大的电影中,女性只说了27%的单词。
  8. js值的拷贝和值的引用_到达P值的底部:直观的解释
  9. mongodb数据可视化_使用MongoDB实时可视化开放数据
  10. dt决策树_决策树:构建DT的分步方法