最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c語言可變參數(shù)實現(xiàn)示例

 更新時間:2014年04月08日 10:27:55   作者:  
這篇文章主要介紹了c語言可變參數(shù)實現(xiàn)示例,需要的朋友可以參考下

這段代碼展示了如何不使用<stdarg.h>中的va_list、va_start、va_end宏來實現(xiàn)自定義可變參數(shù)以及如何改變默認的%d、%f、%s等格式字符。

復制代碼 代碼如下:

#include <stdio.h>
#include <stdlib.h> // itoa() and ltoa()
#include <string.h> // strcat() and strlen()

// echo("$i, $s, $l, $c", arg1, arg2, arg3, arg4)
// $i -- int, $s -- string, $l -- long, $c -- char
void echo(char *fmt, ...)
{
    int i, fmtlen = strlen(fmt);
    int *args = (int *)((char *)(&fmt) +sizeof(char *));

    char cbuff[BUFSIZ] = {'\0'}, nbuff[BUFSIZ] = {'\0'}; // #define BUFSIZ 512 in <stdio.h>

    for (i = 0; i < fmtlen; i++)
    {
        if (('$' == fmt[i]) && ((i + 1) < fmtlen))
        {
            switch (fmt[i + 1])
            {
            case 's': strcat(cbuff, (char *)(*args));
                break;
            case 'c': cbuff[strlen(cbuff)] = (char)(*args);
                break;
            case 'i': itoa(*args, nbuff, 10); strcat(cbuff, nbuff);
                break;
            case 'l': ltoa((long)(*args), nbuff, 10); strcat(cbuff, nbuff);
                break;
            default: break;
            }
            ++args, ++i;
        }
        else
            cbuff[strlen(cbuff)] = fmt[i];
    }

    cbuff[strlen(cbuff) + 1] = '\0';
    fputs(cbuff, stdout);
}
int main()
{
    echo("arg_list = $i, $s, $l, $c", 2, "hello", 8, 'a'); // Si -- %d, $s -- %s, $l -- %ld, $c -- %c

    return 0;
}



相關文章

  • C語言實現(xiàn)掃雷游戲及其優(yōu)化

    C語言實現(xiàn)掃雷游戲及其優(yōu)化

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)掃雷游戲及其優(yōu)化,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • VC實現(xiàn)對話框窗口任意分割

    VC實現(xiàn)對話框窗口任意分割

    最近寫MFC的程序,想在對話框里實現(xiàn)窗口的任意分割。現(xiàn)在網(wǎng)絡資料一大抄,找個東西實在麻煩??偹氵@個很簡單,很快就搞定了,寫下來做個筆記。
    2015-06-06
  • Qt帶參數(shù)的信號和槽函數(shù)舉例詳解

    Qt帶參數(shù)的信號和槽函數(shù)舉例詳解

    信號槽的設計旨在實現(xiàn)控件和處理邏輯的解耦合,但在實際開發(fā)中,一對一的關系更為常見,這篇文章主要介紹了Qt帶參數(shù)的信號和槽函數(shù)的相關資料,需要的朋友可以參考下
    2025-03-03
  • C++三體星戰(zhàn)小游戲源代碼

    C++三體星戰(zhàn)小游戲源代碼

    這篇文章主要給大家介紹了關于C++三體星戰(zhàn)小游戲的相關資料,文中給出了詳細完整的代碼示例,對大家的學習或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • C語言詳解select函數(shù)的使用

    C語言詳解select函數(shù)的使用

    C語言中select函數(shù)的使用?一般用connect、accept、recv或recvfrom這類函數(shù),程序阻塞,直至該套接字上接受到數(shù)據(jù)后程序才能繼續(xù)運行。但是使用select函數(shù)可以實現(xiàn)非阻塞方式的程序
    2022-05-05
  • Qt控件點擊消息獲取的方法詳解

    Qt控件點擊消息獲取的方法詳解

    本文將利用Qt中的QLabel、QPushButton這兩個控件,為大家詳細介紹一下Qt控件點擊消息獲取的方法,文中的示例代碼講解詳細,感興趣的可以了解一下
    2022-06-06
  • C++ 自增、自減運算符的重載和性能分析小結

    C++ 自增、自減運算符的重載和性能分析小結

    這篇文章主要介紹了C++ 自增、自減運算符的重載和性能分析小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • C語言中讀寫交替時出現(xiàn)的問題分析

    C語言中讀寫交替時出現(xiàn)的問題分析

    讀寫命令交替,一定要使用fseek重新定位,否則出現(xiàn)輸入顯示混亂,這篇文章主要介紹了C語言中讀寫交替時出現(xiàn)的問題分析,需要的朋友可以參考下
    2022-12-12
  • C++20中std::format的示例代碼

    C++20中std::format的示例代碼

    本文詳細介紹了C++20中std::format的功能、使用方法和高級應用,包括基本用法、數(shù)字和文本的格式化、日期和時間的處理、自定義類型的格式化等,感興趣的可以了解一下
    2024-10-10
  • Opencv?視頻讀取與寫入的實現(xiàn)示例

    Opencv?視頻讀取與寫入的實現(xiàn)示例

    本文將介紹如何使用OpenCV進行視頻讀寫。通過閱讀本文,您將了解如何讀取視頻文件、處理視頻幀、寫入視頻文件等操作,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧
    2023-08-08

最新評論

射洪县| 新野县| 铁力市| 江津市| 临沧市| 巴塘县| 石林| 手机| 台中市| 伊宁市| 景宁| 南投县| 绥德县| 白银市| 安平县| 铜川市| 佛冈县| 鹤山市| 化州市| 太和县| 耿马| 四川省| 龙井市| 时尚| 平凉市| 旌德县| 博客| 会同县| 永嘉县| 屏边| 遂平县| 长宁区| 镇康县| 河西区| 宁南县| 涞水县| 璧山县| 务川| 新余市| 渝北区| 阳原县|