模擬實現printf

2021-07-13 08:53:28 字數 934 閱讀 8389

模擬實現printf。例如實現

print("d\tcc s!\n",3,'w','e',"welcome to you");

使用可變引數應該有以下步驟:

1)首先在函式裡定義乙個va_list型的變數,這裡是arg_ptr,這個變數是指向引數的指標.

2)然後用va_start巨集初始化變數arg_ptr,這個巨集的第二個引數是第乙個可變引數的前乙個引數,是乙個固定的引數.

3)然後用va_arg返回可變的引數,並賦值給某數. va_arg的第二個引數是你要返回的引數的型別.

4)最後用va_end巨集結束可變引數的獲取.然後你就可以在函式裡使用第二個引數了.如果函式有多個可變引數的,依次呼叫va_arg獲取各個引數。

寫可變引數的c函式要在程式中用到以下這些巨集:

void va_start( va_list arg_ptr, prev_param );

type va_arg( va_list arg_ptr, type );

void va_end( va_list arg_ptr );

va在這裡是variable-argument(可變引數)的意思.

這些巨集定義在stdarg.h中,所以用到可變引數的程式應該包含這個標頭檔案。

**如下:

#include #include #include void print(const char *format, ...)

case 's':

break;

} case 'd':

default:

putchar(*format);

break;

} format++;

} va_end(arg);//把arg指標清為null 

}int main()

本文出自 「scen」 部落格,請務必保留此出處

模擬實現printf函式

如果要想解決這個問題 就要 知道乙個知識點 可變引數列表 可變引數列表是通過巨集來實現的,這些巨集定義於stdarg.h標頭檔案中,它是標準庫的一部分。這個標頭檔案宣告 個型別va list 和三個巨集va start va arg和va end。轉到定義處 檢視一下這幾個巨集和型別 typedef...

模擬實現printf 函式

在構建printf 函式之前,需要簡單分析printf 在幫助文件中可以看到,printf 的格式為printf char format,也就是說printf 是乙個可變引數的函式 此外,還需要了解這些引數是如何在記憶體中儲存的。從這個棧楨結構圖中可以看到print 函式的引數的存放方式,print...

模擬實現 」printf「 函式

在c語言學習中,通過將函式實現為可變引數 形式,使得函式可以接受任意多個引數。當了解可變引數之後很容易實現printf函式。能完成下面函式的呼叫。print s ccc d.n hello b i t 100 函式原型 print char format,include include 使用可變引數...