zoukankan      html  css  js  c++  java
  • C 处理可变参数函数 (二)

    前面说了如何 很原始的实现可变参数的问题

    http://www.cnblogs.com/niniwzw/archive/2009/11/06/1597464.html

    但是,这样的方法可移植性比较的查,不同的cpu ,32 位 ,64 位可以变量对其的方法有差别。

    比较好的做法是用 c内部的函数库来实现。

    不废话了,贴上代码:

    #include <stdlib.h> 
    #include 
    <stdarg.h>
    #include 
    <string.h>
    #include 
    <stdio.h>

    char *vstrcat(const char *first, ...);

    int main(int argc, char **argv)
    {
        
    char *= vstrcat("混沌""是好孩子吗""");
        printf(
    "%s\n", p);
        free(p);
    }

    char *vstrcat(const char *first, ...)
    {
        size_t len;
        
    char *retbuf;
        va_list argp;
        
    char *p;
        
    if(first == NULL)
            
    return NULL;

        len 
    = strlen(first);

        va_start(argp, first);
        
    while((p = va_arg(argp, char *)) != NULL)
            len 
    += strlen(p);
        va_end(argp);

        retbuf 
    = (char *)malloc(len + 1); /* +1 包含终止符\0 */
        
    if(retbuf == NULL)
            
    return NULL; /* 出错*/

        (
    void)strcpy(retbuf, first);

        va_start(argp, first); 
    /* 重新开始扫描*/
        
    while((p = va_arg(argp, char *)) != NULL)
             strcat(retbuf, p);
        va_end(argp);

        
    return retbuf;
    }
  • 相关阅读:
    JavaScript基础数组的字面声名法(010)
    @Scheduled(cron="") spring定时任务时间设置
    servlet示例
    javaweb jsp页面上传excel文件
    js闭包详解
    eclipse 使用mvn模块化开发
    linux 安装mysqlServer
    linux安装jdk
    深入学习微框架Spring-boot
    mvn打包发布
  • 原文地址:https://www.cnblogs.com/niniwzw/p/1622767.html
Copyright © 2011-2022 走看看