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

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

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

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

復(fù)制代碼 代碼如下:

#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;
}



相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

    Qt控件點(diǎn)擊消息獲取的方法詳解

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

    C++ 自增、自減運(yùn)算符的重載和性能分析小結(jié)

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

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

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

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

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

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

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

最新評(píng)論

枝江市| 霞浦县| 贡觉县| 佛山市| 沁水县| 黔西| 湘乡市| 晴隆县| 信宜市| 读书| 来安县| 新河县| 伊金霍洛旗| 焦作市| 江油市| 来凤县| 嘉定区| 大渡口区| 大丰市| 黑山县| 阿巴嘎旗| 营口市| 叶城县| 筠连县| 乐昌市| 福鼎市| 和平区| 洪雅县| 襄城县| 唐山市| 蓝山县| 江源县| 丽江市| 永寿县| 溧水县| 垫江县| 同仁县| 奉化市| 芒康县| 益阳市| 抚顺市|