~cpp
#include <iostream>
#include <stdarg.h>
#include <stdlib.h>
using namespace std;
int decimal, sign;
#define limit 5
#define IntSize 12
void print(char *n, ...)
{
va_list l;
va_start(l,n);
while(*n)
{
if(*n=='%')
{
n++;
if(isdigit(*n))
{
char number = *n;
n++;
if(*n=='d')
{
char st[IntSize];
itoa(va_arg(l,int), st, 10);
if((number-48)>strlen(st))
for(int i=0; i<(number-48-strlen(st)); i++)
putchar(' ');
fputs(st, stdout);
}
else if(*n=='s')
fputs(va_arg(l,char*), stdout);
else if(*n=='f')
{
char *st=_fcvt(va_arg(l,double), limit, &decimal, &sign);
if(sign==1)
putchar('-');
for(int k=decimal+limit; k>=0; k--)
{
if(decimal==0)
putchar('.');
else
putchar(*(st++));
decimal--;
}
}
else
{
putchar('%');
putchar(number);
putchar(*n);
}
n++;
}
else
{
if(*n=='d')
{
char st[IntSize];
itoa(va_arg(l,int), st, 10);
fputs(st, stdout);
}
else if(*n=='s')
fputs(va_arg(l,char*), stdout);
else if(*n=='f')
{
char *st=_fcvt(va_arg(l,double), limit, &decimal, &sign);
if(sign==1)
putchar('-');
for(int k=decimal+limit; k>=0; k--)
{
if(decimal==0)
putchar('.');
else
putchar(*(st++));
decimal--;
}
}
else
{
putchar('%');
putchar(*n);
}
n++;
}
}
else if(*n=='@')
{
n++;
if(*n=='d')
{
int *number = va_arg(l,int*);
int count = va_arg(l, int);
putchar('{');
for(int i=0; i<count; i++)
{
char st[IntSize];
itoa(number[i], st, 10);
fputs(st, stdout);
if(i!=(count-1))
putchar(',');
}
putchar('}');
}
else if(*n=='s')
{
char **ch= va_arg(l,char**);
int count = va_arg(l, int);
putchar('{');
for(int i=0; i<count; i++)
{
fputs(ch[i], stdout);
if(i!=(count-1))
putchar(',');
}
putchar('}');
}
else if(*n=='f')
{
double *number = va_arg(l, double*);
int count = va_arg(l, int);
putchar('{');
for(int i=0; i<count; i++)
{
char *st=_fcvt(number[i], limit, &decimal, &sign);
if(sign==1)
putchar('-');
for(int k=decimal+limit; k>=0; k--)
{
if(decimal==0)
putchar('.');
else
putchar(*(st++));
decimal--;
}
if(i!=(count-1))
putchar(',');
}
putchar('}');
}
else
{
putchar('@');
putchar(*n);
}
n++;
}
else
putchar(*(n++));
}
}
int main()
{
int d=1234;
double f=-2.12321;
char *s="String";
print("정수 : %d, 실수 : %f, 문자열 : %s\n", d, f, s);
int a[3] = { 1, 2, 3 };
char *b[2] = { "abc", "def" };
double c[2] = { -1.22342, 43.232 };
print("array: @d\n", a, 3);
print("array: @s\n", b, 2);
print("array: @f\n", c, 2);
int n1 = 123;
int n2 = 12345;
int n3 = 12345678;
print("number: %7d\n", n1);
print("number: %7d\n", n2);
print("number: %7d\n", n3);
return 0;
}
----
헉!기웅아..
내가 위키 사용법을 잘 몰라서 올리는 법좀 붙여쓰기해서 사용했더니..
니꺼 다 날라갔다...-..ㅡ;;
미안.... ^^;;
- 허준수 -
- 위키의 메뉴중 '과거'를 누르면 과거의 상태를 보거나 복구할 수 있습니다. 제가 복구했습니다.^^ -
조현태
- 내가 다시 올려놨삼~ 중간에 없어진게 좀 있어서~ -
하기웅
----
OurMajorLangIsCAndCPlusPlus/print