?? cpp1qww.cpp
字號:
int myprint(const char* format,...) //必須是三個點號...
{
char str[1024]={0};
int i=0;
va_list list; //typedef char* va_list,一個指向字符類型的指針
va_start(list,format); //把list設置為指向可變參數的第一個參數
while (*format != '\0 ')
{
if (*format == '% ')
{
switch (*(++format))
{
case 'd ':
itoa(va_arg(list,int),(str+i),10); //原型:va_arg(va_list list,type),返回list中類型為type的當前的參數, 并將list指向下一個參數(其原理是
i=strlen(str); //根據當前指針list+sizeof(type),從而實現指針指向下一個參數
break;
case 'c ':
str[i++]=va_arg(list,char); //va_arg宏參數:第一個為va_list類型,第二個為參數的數據類型
break;
case 's ':
strcat(str,va_arg(list,char*)); //調用va_arg宏,返回當前參數,并且list指向下一個可變參數(如果有)
break;
}
format++;
continue;
}
str[i++]=*format;
format++;
}
va_end(list); //重新設置list,把指針設置為NULL
puts(str);
return (int)strlen(str);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -