日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

可变参数输出(三)

發布時間:2023/11/30 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 可变参数输出(三) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Linux C關于輸出函數的定義:

int printf(const char *format,…); int vprintf(const char * format,va_list ap); int vfprintf(FILE *stream,cosnt char *format,va_list ap); int vsprintf(char *str,const char *format,va_list ap); int vsnprintf(char *str,size_t size,const char*format,va_list ap);

?

va_list ap; //首先定義了一個va_list類型的變量

void va_start(va_list ap, last); //va_start的第一個參數va_list變量,第二個參數為函數的最后一個固定參數

void va_end(va_list ap); //用va_end結束迭代

type va_arg(va_list ap,type);

?

使用int_vsnprintf(char* str,size_t size,const char * format,va_list ap); 函數進行格式轉化輸出不定參數函數。

vsnprintf()是c語言庫函數之一,屬于可變參數,用于向字符串打印數據以及數據格式和用戶自定義等。

?

頭文件:#include<stdio.h>

函數聲明:int_vsnprintf(char* str,size_t size,const char *format,va_list ap);

參數說明:

char* str [out]:把生成的格式化的字符串存放在這里。

size_t size [in]: str可接受的最大字節數防止產生數組越界。

const char *format: [in] 指定輸出格式的字符串,它決定了你需要提供的可變參數的類型,個數順序。

va_list ap [in] ,va_list變量,va:variable-argument:可變參數。(就是…里所包含的內容存放到這個變參數的變量當中去);

?

變長數據的讀取方式

va_start(args,fmt); size_t buf_len = vsnprintf(buffer,MAX_LOG_LEN,str_format,args); va_len(args);

可變參數實例:

/*** vsnprintf.c ***/ #include<stdio.h> #include<stdarg.h>void my_print(char *fmt,...) {va_list args;va_start(args,fmt);char buff[1024];vsnprintf(buff,1023,fmt,args);printf("%s\n",buff);va_end(args); }int main() {int age = 78;my_print("hello world");my_print("hello %d",2345);my_print("hello my age is : %d",age);return 0; }

輸出結果:

exbot@ubuntu:~/wangqinghe/C/20190703$ gcc vsnprintf.c -o vsnprintf

exbot@ubuntu:~/wangqinghe/C/20190703$ ./vsnprintf

hello world

hello 2345

hello my age is : 78

轉載于:https://www.cnblogs.com/wanghao-boke/p/11125682.html

總結

以上是生活随笔為你收集整理的可变参数输出(三)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。