1. 程式人生 > >【C語言】用可變引數列表實現printf函式

【C語言】用可變引數列表實現printf函式

//用可變引數列表實現printf函式
#include <stdio.h>
#include <stdarg.h>
void my_printf(const char *str,...)
{
	va_list fun;
	va_start (fun,str);
	while(*str!=0)
	{
		if(*str=='c')
		{
			putchar(va_arg(fun,char ));
		}
		if(*str=='s')
		{
			puts(va_arg(fun,char *));
		}
		str++;
	}
	va_end(fun);
}

int main ()
{
	my_printf("ccss",'a','j',"sas","awdaf");
	return 0;
}

相關推薦

C語言可變引數列表實現printf函式

//用可變引數列表實現printf函式 #include <stdio.h> #include <stdarg.h> void my_printf(const char *st

c語言可變引數列表實現一個簡化的printf函式

//實現一個簡化的printf函式。 #include <stdarg.h> #include <string.h> void my_printf(const char *str,...) { va_list arg; //準備訪問可變引

C語言使用可變引數實現函式,求函式引數的最大值。

求若干個引數的最大值,我們假定第一個可變引數為最大值,定義為max,將之後的每一個可變引數和第一個可變引數相比較,始終在max裡存放的是最大值。 但是這裡需要注意,每一次呼叫va_arg,都會指向下一個可變引數,因此我們需要將其值儲存在臨時變數裡,以防指向錯誤。   #includ

c語言迴圈結構輸出下列數字金字塔

  #include<stdio.h> void main(){ int i,j,k; for(i=1;i<=10;i++){ for(j=10;j>i;j--) printf(" "); for(k=1;k<=(2*i-1)/2

C語言結構體陣列指標完成:有三個學生資訊,存放在結構體陣列中,要求輸出全部資訊

//用結構體陣列指標完成:有三個學生資訊,存放在結構體陣列中,要求輸出全部資訊 #include <stdio.h> struct Stu { int num; char name[2

C語言中的可變引數列表

還記得剛學C語言時,第一個程式就是使用printf列印“hello world!”,當時覺得很神奇,後來慢慢覺得是最簡單的,可漸漸熟悉之後發現,我們寫的函式的引數都是固定的,而發現printf的引數居然是不定的,不知道有沒有去研究過這個問題呢。其實這就是C語言中

C語言結構體陣列完成:有5個學生(包括學號,姓名,成績),要求按照成績高低輸出學生資訊.

//用結構體陣列完成:有5個學生(包括學號,姓名,成績),要求按照成績高低輸出學生資訊 #include <stdio.h> struct Stu { int num; char na

c語言π/4 ≈ 1

// 用π/4 ≈ 1 - 1/3 + 1/5 - 1/7 +... 公式求π的近似值,直到發現某一項的絕對值小於10^6為止。 #include <stdio.h> #include <math.h> int main() { double

c語言選擇法對10個整數排序

#include <stdio.h> int main() { int i,j,min,temp,a[11]; printf("enter data:\n"); for(i=1;i<=10;i++) { scanf("%d",&a[i]

C語言遞迴函式實現函式功能的幾個例子

1.問題描述:寫一個遞迴函式DigitSum(n),輸入一個非負整數,返回組成它的數字之和。例如,呼叫DigitSum(1729),則應該返回1+7+2+9,它的和是19。 思路:這個題比較類似於求拆分整數,一個一個輸出。這個題多得一步是在拆分後,將這些數字加

可變引數列表實現簡單的printf函式

#include<stdio.h> #include<string.h> #include<stdlib.h> #include<stdarg.h> void print_num(int n) { if (

C語言:使用可變引數實現函式,求函式引數的平均值。

此題的解決思路為:使用可變引數列表,求若干個引數的平均值,所以我們每次呼叫va_arg把它的值累加在sum變數裡,最後讓函式返回sum/n即可求得若干個引數的平均值。 具體程式碼如下: #include <stdio.h> #include <stdli

C語言可變引數列表剖析

一、為什麼函式要有可變引數列表      就舉一個簡單的例子來解答這個問題吧,具有一定C語言程式設計基礎的讀者,一定知道求兩個數平均值的函式,實現過程很簡單,我們只需要把兩個引數傳給函式,並用一個變數接收函式返回來的結果即可。      但是,我們都知道現實生活中,我們需要求

C語言main函式引數解析

main函式 每個C程式都必須有一個main函式,main函式又稱為主函式,是執行程式的起點,它被稱之為函式,是否會像平時使用函式時需要自己的引數呢? 答案是肯定的,那麼他都有那些引數呢? main函式的在vs2017環境下除錯,可以看到main函式裡的三個引數

c語言將兩個字串連線起來,不要strcat函式

#include <stdio.h> int main() { char s1[80],s2[40]; int i=0,j=0; printf("input string1:"); scanf("%s",s1); printf("input strin

C語言函式引數中的const修飾符

  通常,字串操作函式原型中,都會在形參前面加上const修飾符,表示此指標不能用於修改字串的值   比如:char *strcpy(char *strDest, constchar *strSrc)

C語言觀察者模式C語言實現

《C語言實現觀察者模式》 說明: 本例中使用了連結串列資料結構,該結構移植自linux核心原始碼的連結串列,使用方法見我的另一篇部落格,地址:【點選此處檢視連結串列使用方法】

C語言統計數字在排序數組中出現的次數

語言 個數 統計 ret r+ () class tdi times //數字在排序數組中出現的次數。 //統計一個數字在排序數組中出現的次數。比如:排序數組{1,2,3,3,3,3,4,5}和數字3,因為3出現了4次,因此輸出4. #include <stdio

C語言推斷一個數是否為2的n次方

post data- popu scanf scan ng- 輸入 ont print //推斷一個數是否為2的n次方 #include <stdio.h> int is_two_n(int num) { if ((num&(num - 1))

C語言 二叉樹的基本運算

IT btree AS CA style pri != -- str • 二叉樹節點類型BTNode: 1 typedef struct node 2 { 3 char data; 4 struct node *lchild, *rch