首页 > 其他分享 >c: 可变参数

c: 可变参数

时间:2022-12-28 03:22:05浏览次数:34  
标签:tmp rocky int char 参数 可变 include buff

c: 可变参数

 

 

 

 

一、可变参数源码

 

 1 [root@rocky c]# cat  arg_test.c 
 2 #include<stdio.h>
 3 #include<stdlib.h>
 4 #include<stdarg.h>
 5 #include<string.h>
 6 
 7 
 8 
 9 
10 void ucat(int size, char *str, ...)
11 {
12         char buff[1024];
13         char *tmp;
14 
15         strcat(buff, str);
16         strcat(buff, "->");
17 
18         va_list vl;
19         va_start(vl, str);
20         for(int i=0; i<size; i++)
21         {
22                 tmp = va_arg(vl, char*);
23                 printf("tmp_%d = %s\n", i, tmp);
24                 strcat(buff, tmp);
25                 // set the number of string "->"
26                 if( i < (size - 1) ){
27                         strcat(buff, "->");
28                 }
29         }
30         va_end(vl);
31 
32         printf("result: %s\n", buff);
33 
34 }
35 
36 
37 
38 
39 int main(int argc, char *argv[], char *envp[])
40 {
41 
42         ucat(6,"string", "string0", "string1","string2","string3","string4","string5" );
43 
44 
45         return 0;
46 
47 }

 

 

 

 

二、运行结果

 

 1 [root@rocky c]# cat  arg_test.c 
 2 #include<stdio.h>
 3 #include<stdlib.h>
 4 #include<stdarg.h>
 5 #include<string.h>
 6 
 7 
 8 
 9 
10 void ucat(int size, char *str, ...)
11 {
12         char buff[1024];
13         char *tmp;
14 
15         strcat(buff, str);
16         strcat(buff, "->");
17 
18         va_list vl;
19         va_start(vl, str);
20         for(int i=0; i<size; i++)
21         {
22                 tmp = va_arg(vl, char*);
23                 printf("tmp_%d = %s\n", i, tmp);
24                 strcat(buff, tmp);
25                 // set the number of string "->"
26                 if( i < (size - 1) ){
27                         strcat(buff, "->");
28                 }
29         }
30         va_end(vl);
31 
32         printf("result: %s\n", buff);
33 
34 }
35 
36 
37 
38 
39 int main(int argc, char *argv[], char *envp[])
40 {
41 
42         ucat(6,"string", "string0", "string1","string2","string3","string4","string5" );
43 
44 
45         return 0;
46 
47 }
48 [root@rocky c]# 
49 [root@rocky c]# 
50 [root@rocky c]# ./arg_test 
51 tmp_0 = string0
52 tmp_1 = string1
53 tmp_2 = string2
54 tmp_3 = string3
55 tmp_4 = string4
56 tmp_5 = string5
57 result: string->string0->string1->string2->string3->string4->string5
58 [root@rocky c]# 
59 [root@rocky c]# 

 

标签:tmp,rocky,int,char,参数,可变,include,buff
From: https://www.cnblogs.com/lnlidawei/p/17009335.html

相关文章

  • .NetCore中EFCore查询参数不固定,动态创建表达式树的方法
    第3方开源的有:​​https://github.com/davideicardi/DynamicExpresso​​​​https://github.com/microsoft/RulesEngine​​​​https://github.com/zzzprojects/System.Li......
  • MyBatis四大参数两种写法
    MyBatis四大参数两种写法1.在主配置文件中,直接写到value值里面  2.四大参数写入单独配置文件开始是  为了避免以后其他框架冲突都加个前缀jdbc.  主......
  • JDK8引进的JVM参数变化记录
    1.PermGen空间​​被移除了,取而代之的是Metaspace​​需要做的调整为-XX:PermSize=64m-XX:MaxPermSize=128m变成 -XX:MetaspaceSize=64m-XX:MaxMetaspaceSize=128m否则......
  • JVM疑难启动参数汇总
    ThreadLocalAllocationBuffer,简称就是:TLAB,即内存本地的持有的buffer,设置参数有:-XX:+UseTLAB                         启用这种机制的意思-XX......
  • 11个案例讲透 Python 函数参数
    今天给大家分享一下自己整理的一篇Python参数的内容,内容非常的干,全文通过案例的形式来理解知识点,自认为比网上80%的文章讲的都要明白,如果你是入门不久的python新手,......
  • sqlite3 执行带参数的sql语句
    c=conn.cursor()#获取游标sql1='''insertintocompany(id,name,age,address,salary)values(?,?,?,?,?)'''arg=(None,'王五',32,'天堂',......
  • nodejs 接收参数,js前端传参方法
    nodejs//接口:查询检测结果req.query接收router.get('/getDetectionResult',(req,res)=>{console.log(req.query.id);constconn=mysql.createConnection(......
  • Java千问:Java语言如何给主方法传递参数?看完秒懂!
    ​大家都知道,Java语言运行程序的入口方法叫做main,这个方法有一个参数,这就表示说,我们要运行主方法,就必须给main方法传递一个参数。但是,大家似乎对这个参数向来都是视而不见,从......
  • js获取url参数
    <head></head><body></body><scriptsrc="http://code.jquery.com/jquery-1.11.1.min.js"></script><Scriptlanguage="javascript">$(window).load(function(){......
  • js中通过url传参的方式是很常见的,而传参的过程中获取参数也是很关键的一部分。本文主
    js中通过url传参的方式是很常见的,而传参的过程中获取参数也是很关键的一部分。本文主要分享js获取url参数的函数和调用方法。JS函数:1functiongetQuery(key){2......