zoukankan      html  css  js  c++  java
  • c 可变参数 可变 形参 不确定

    c 可变参数 :gcc -g -Wall -O0 fuck.c -o fuck

    #include <stdlib.h> /* 說明 malloc, NULL, size_t */
    #include
    <stdarg.h> /* 說明 va_ 相關類型和函數 */
    #include
    <string.h> /* 說明 strcat 等 */

    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
    = 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)
    (
    void)strcat(retbuf, p);

    va_end(argp);

    return retbuf;
    }


    int
    main ( )
    {

    char *str = vstrcat("Hello, ", "world!", "123", "wo");
    printf (
    "%s\n", str);

    return 0;
    }
    /* ---------- end of function main ---------- */
  • 相关阅读:
    Eleven-面向对象进阶
    Ten-面向对象
    Nine-常用模块
    Eight-内置函数和匿名函数
    Seven-递归函数和装饰器函数
    Six-迭代器和生成器
    Five-函数
    Four-深浅copy和文件操作
    Third-基础数据类型
    Second-基础
  • 原文地址:https://www.cnblogs.com/wangkangluo1/p/2097680.html
Copyright © 2011-2022 走看看