我的C语言可变参数的实现
生活随笔
收集整理的這篇文章主要介紹了
我的C语言可变参数的实现
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
實(shí)現(xiàn)環(huán)境:Fedora12 + gcc
任務(wù):用C語言實(shí)現(xiàn)一個(gè)參數(shù)可變的函數(shù),以方便輸出。
源代碼如下:
#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; }
輸出如下:
關(guān)鍵點(diǎn)還是調(diào)用了vsprintf,另外就是要了解va_start(), va_end()以及va_list的使用!
總結(jié)
以上是生活随笔為你收集整理的我的C语言可变参数的实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 转载通过 Docker 实现传统应用程序
- 下一篇: 创建库文件c语言,创建自己的函数库