有时候需要写一个不定长参数的传入,怎么办?
比如:
写一个显示函数 show(char *str);用于在某些特殊屏幕显示。
但是这个str 是一个固定的参数,所以要先做 sprintf(str,format,…);然后才能传给它。
这样比较麻烦,直接写成 show(char *str,int len,char *format,…);输入不定长参数,更加方便。
代码如下:
#include <stdlib.h>
#include <stdio.h>
#include <sys/errno.h>
#include <stdarg.h>
int mySnprintf(char *msg,int len,char *format,...)
{
//make all args into msg.
va_list show_str_list;
int n=0;
va_start(show_str_list, format);
n=vsnprintf (msg, len, format, show_str_list);
va_end(show_str_list);
}
比如有时候需要根据某种格式对不定长数据进行切割
#include <stdlib.h>
#include <stdio.h>
#include <sys/errno.h>
#include <stdarg.h>
void mySscanf( const char * str, const char * format, ... )
{
va_list args;
va_start (args, format);
vsscanf (str, format, args);
va_end (args);
}
C语言不定长参数处理

本文介绍如何在C语言中处理不定长参数,通过使用va_list、va_start、vsnprintf等函数,实现如sprintf和sscanf的功能。适用于需要根据格式处理不定长数据的场景。
635

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



