U E D R , A S I H C RSS

Our Major Lang IsCAndCPlus Plus/print/하기웅

puts 통해 fputs, putchar, _fcvt .
C++ .
.

~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
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:57
Processing time 0.0236 sec