/*
sscanf과 sprintf의 사용
여러함수가 있지만 그중에서
모든 기본 데이타형에 대하여 변환이 가능한
sscanf, sprintf를 소개합니다.
sscanf은 scanf 과
sprintf은 printf과 사용법이 거의 같으므로 간단히 사용할 수 있습니다.*/
/*
문자열을 숫자로 변환하는 함수와
int atoi
long atol, strtol
unsigned long strtoul
double atof, strtod
long double _atold _strtold
any basic types sscanf
...
...
...
숫자를 문자로 변환하는 함수
itoa int
ultoa unsigned long
...
...
sprintf any basic types */
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
void main()
{
char i_str[] = "1234", f_str[] = "12.345";
int i;
long l;
unsigned long ul = 34000UL;
float f;
double d;
long double ld;
// 문자열을 숫자로
// atoi
i = atoi( i_str );
printf( " 문자열 i_str(\"%s\")은 정수로 %d입니다.\n", i_str, i );
// atol
l = atol( i_str );
printf( " 문자열 i_str(\"%s\")은 긴 정수로 %ld입니다.\n", i_str, l );
// atof
d = atof( f_str );
printf( " 문자열 f_str(\"%s\")은 double형으로 %.4lf입니다.\n", f_str, d );
// atold
ld = _atold( f_str );
printf( " 문자열 f_str(\"%s\")은 long double형으로 %.4Lf입니다.\n", f_str, ld );
// strtold
ld = strtold( f_str );
printf( " 문자열 f_str(\"%s\")은 long double형으로 %.4Lf입니다.\n", f_str, ld );
// sscanf
sscanf( i_str, "%d", &i );
printf( " 문자열 i_str(\"%s\")은 int형으로 %d입니다.\n", i_str, i );
sscanf( i_str, "%lu", &ul );
printf( " 문자열 i_str(\"%s\")은 unsigned long형으로 %lu입니다.\n", i_str, ul );
sscanf( f_str, "%f", &f );
printf( " 문자열 f_str(\"%s\")은 float형으로 %.4f입니다.\n", f_str, f );
sscanf( f_str, "%lf", &d );
printf( " 문자열 f_str(\"%s\")은 double형으로 %.4lf입니다.\n", f_str, d );
sscanf( f_str, "%Lf", &ld );
printf( " 문자열 f_str(\"%s\")은 long double형으로 %.4Lf입니다.\n", f_str, ld );
// 숫자를 문자열로
strcpy( i_str, "" );
strcpy( f_str, "" );
// itoa
itoa( i, i_str, 10 );
printf( " int형 %d를 문자열로 바꾸면 \"%s\"입니다.\n", i, i_str );
// ultoa
ultoa( ul, i_str, 10 );
printf( " unsigned long %lu를 문자열로 바꾸면 \"%s\"입니다.\n", ul, i_str );
// sprintf
sprintf( i_str, "%d", i );
printf( " int형 %d를 문자열로 바꾸면 \"%s\"입니다.\n", i, i_str );
sprintf( i_str, "%lu", ul );
printf( " unsigned long형 %lu를 문자열로 바꾸면 \"%s\"입니다.\n", ul, i_str );
sprintf( f_str, "%.2f", f );
printf( " float형 %.2f를 문자열로 바꾸면 \"%s\"입니다.\n", f, f_str );
sprintf( f_str, "%.2f", d );
printf( " double형 %.2lf를 문자열로 바꾸면 \"%s\"입니다.\n", d, f_str );
sprintf( f_str, "%.2Lf", ld );
printf( " long double형 %.2Lf를 문자열로 바꾸면 \"%s\"입니다.\n", ld, f_str );
getch();
}