可変パラメータリストの詳細
3421 ワード
コードを献上!作成した簡単なシミュレーション簡単printf関数1.文字列「s」と文字「c」の処理を実現し、皆さんは自分で機能の完備を行うことができます!
// printf();
79.
80.#include<stdio.h>
81.#include<stdarg.h>
82.
83.void print(charchar *str, ...)
84.{
85. const charchar *p = NULL;
86. char ch;
87. char c;
88. va_list arg;// char
89.
90. va_start(arg,str); // !
91.
92. while(*str)
93. {
94. switch(*str) //switch , !
95. {
96. case 's':
97. p = va_arg(arg,const charchar *); // va_arg , !
98. while(*p)
99. {
100. putchar(*p);
101. p++;
102. }
103. ++str;
104. break;
105. case 'c':
106. ch = va_arg(arg,char);
107. putchar(ch);
108. ++str;
109. break;
110. case ' ': // , switch, !
111. ++str;
112. break;
113. case '
':
114. putchar('
');
115. ++str;
116. break;
117. default:
118. break;
119.
120.
121. }
122. }
123. va_end(arg); // , arg NULL;
124.}
125.
126.int main()
127.{
128.
129. print("s ccc
","hello",'b','i','t');
130. //printf("%s","strstr");
131.
132. return 0;
133.}
2. !
stdarg
, stdarg.h , 。 va_list
——va_start、va_arg、va_end。 va_list , , 。
int printf(const char *fmt, ...);
... , c , ,... , 。 :
int printf(const char *fmt, ...)
{
int res;
va_list arg;
va_start(arg, fmt);
res = vprintf(fmt, arg);
va_end(arg);
return res;
}
vprintf, , vprintf , 。 min, #define min(a, b) (a < b? a: b) , :
int min(int n, int m, ...)
{
int tmp;
int res = m;
va_list arg;
va_start(arg, m);
while (--n > 1)
{
tmp = va_arg(arg,int);
if (tmp < res)
res = tmp;
}
va_end(arg);
return res;
}
3.
java ,C , :</span>
1、 。 printf , cocos2d NULL
2、 。 , , , 。 , printf
<span style="font-size:18px;">4. </span>
<span style="font-size:18px;"><img alt="" src="http://pic002.cnblogs.com/images/2011/352816/2011120416573922.jpg" />ps</span>
<span style="font-size:18px;">
</span>