서식문자 실습
- 서식 문자를 이용한 형식 지정
- %f
- %c / %s
- 서식 문자의 확장 형식
- 아스키코드와 서식문자
1. 서식 문자를 이용한 형식 지정
1. 실수값의 경우 %와 f사이에 .숫자를 입력하여 소수점 아래 자리수 제어
2. %와 알파벳 사이의 정수값을 넣어서 데이터가 출력되는 공간 지정 가능
(데이터는 지정된 영역 안에서 오른쪽 정렬되어 출력)
printf("%10d\n", 132456);
printf("%10s\n", "test");
printf("가격\t: %8d 원\n", 20000);
printf("부가세\t: %8d 원\n", 2000);
printf("합계\t: %8d 원\n", 22000);
* 총 10칸비워서 우측 정렬
2. %f
%f 서식문자로 실수값을 출력
> 기본적으로 소수점 아래 여섯자리까지 출력
%와 f사이에 숫자를 넣어서 소수점 아래 몇자리를
출력할 것인지 결정
printf("%f + %f = %f\n", 1.2, 2.4, 1.2 + 2.4);
printf("%.1f + %.1f = %.1f\n", 1.2, 2.4, 1.2 + 2.4);
printf("%.2f + %.2f = %.2f\n", 1.222, 2.4, 1.222 + 2.4);
printf("%.2f + %.2f = %.2f\n", 5.555, 6.6666, 5.555 + 6.6666);
결과
1.200000 + 2.400000 = 3.600000 소수점 여섯자리까지 출력
1.2 + 2.4 = 3.6 소수점 한자리까지 출력
1.22 + 2.40 = 3.62 .뒤 숫자만큼 출력이 되더라, 라고 알고 있으면 됨
5.55 + 6.67 = 12.22
* 반올림의 경우 .숫자를 이용하면 정확한 결과를 출력하지 못한다.
3. %c / %s
%c 서식문자로 1byte 문자의 출력 위치/형식 지정이 가능
%s 서식문자로 2byte 이상의 문자(=문자열)의 출력 위치/형식 지정 가능
printf("%c %c\n", 't', 's');
printf("%c\n", 'ㄱ'); //error code
printf("%c\n", 'test'); //error code
결과
t s
?
t >> 첫글자인 t만 출력
4. 서식 문자의 확장 형식
1. 서식문자 사이(%기호와 문자 사이)에 정수 입력 시
데이터 출력 시 정수만큼의 칸을 만들어서 데이터 출력
정수값이 양수라면 오른쪽 정렬, 음수라면 왼쪽 정렬
2. 서식문자 사이(%기호와 문자 사이)에 실수 입력 시
정수값은 기존과 동일하게 칸 수 지정
실수값은 소수점 아래 몇 자리까지 출력할 것인지 지정
(ex. %10.3f >>10칸 공간에서 데이터는 오른쪽 정렬
소수점 아래 셋째자리까지 출력)
int a = 10;
double b = 1.111;
char c[10] = "test";
printf("a :%5d\nb:%10.3f\n", a, b);
printf("c :%-10s,%10s\n", c, c); //-10s 는 왼쪽 정렬, 10s 는 오른쪽 정렬
double a = 1.123, b = 4.456, c = 7.789;
printf("a:%10.3f\nb:-5.2ftest\nc:%.1f\n", a, b, c);
/*결과
a : 1.123
b :4.46 test
c :7.8
*/
//활용 예
int a = 191000, b = 19100;
printf("금액\t%10d원\n부가세\t%10d원\n합계\t%10d원\n", a, b, a + b);
5. 아스키코드(ASCII)와 서식문자
여러 장치/운영체제에서 동일한 문자를
동일한 2진수로 처리할 수 있도록 만들어 놓은 기준 값
아스키 코드를 사용하여 단일 문자를 %d 서식문자로 출력 가능
+ 단일 문자에 +, - 연산이 가능
char ca = 'A';
printf("ca :%c, %d\n", ca, ca)
// ca : A, 65
int va = 65
printf("va : %d, %c\n", va, va);
//va : 65, A
char na = va + 32;
printf("na : %c, %d\n", na, na);
//na : a,97
int sa = na + 1;
printf("sa : %d, %c\n", sa, sa);
//sa : 98,b
char enter = '\n';
printf("\\n: %c,%d\n", enter, enter);
//\n:
//, 10 > char 값은 enter가 double은 ASCII 10이 출력됨.