我的C语言可变参数的实现
生活随笔
收集整理的這篇文章主要介紹了
我的C语言可变参数的实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
實現環境: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; }
輸出如下:
關鍵點還是調用了vsprintf,另外就是要了解va_start(), va_end()以及va_list的使用!
總結
以上是生活随笔為你收集整理的我的C语言可变参数的实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 转载通过 Docker 实现传统应用程序
- 下一篇: 创建库文件c语言,创建自己的函数库