본문 바로가기
컴퓨터 공학/C, C++

[ C ] 문자열 함수 이해하기7_서식 지정 출력 / 서식 문자열 / 서식 지정자 모음

by hahehohoo 2020. 7. 23.
반응형

C언어 문법 서식 지정 출력(formatted) / 서식 문자열(format string) / 서식 지정자 모음

 

 

■ 서식 지정(formatted) 출력이란

C언어 학습할 때 자주 사용했던 함수 printf()가 있습니다. 가장 기본 출력 함수인데, 맨 앞 글자 f는 formatted 입니다. 포맷에 맞춘다는 것은 데이터를 특정 서식에 맞춰 출력하는 것을 의미합니다. 그래서 C언어에서는 '서식 지정 출력'이라고 합니다. 서식 지정 출력 중에서 가장 자주 사용되는 3가지를 보겠습니다. 

 

1 printf() 콘솔창(stdout) 에 출력 
2 fprintf() 스트림에 출력
3 sprintf() 문자열에 출력

 

stdout이라는게 우리가 알고 있는 커맨드창 콘솔입니다. 

2 fprintf 에서 맨 앞 글자 f는 file을 의미합니다. file을 스트림으로 본다는 거죠

sprintf() s는 string입니다.

 

 

■ 서식 문자열(format string)란

C는 함수 오버로딩 없기 때문에 printf에 그냥 int형을 넣는다고 int를 출력해주지 않습니다. 그래서 서식문자(%d, %u 같은 것들) 넣어서 뒤에 오는 다른 매개변수들을 어떤 형(포맷)으로 출력할 것인지 알려줘야 합니다. 그런 문자들을 서식문자열(format string)이라고 합니다.  

 

printf("Hello "); // 일반 문자열
printf("%d", grade); // 서식 문자열: 정수
printf("%c", ch); // 서식 문자열: 문자

 

서식 문자열에는 아래와 같이 여러 데이터가 들어갈 수 있습니다. 이때 데이터들을 서식 지정자의 순서와 동일한 순서로 추가 매개변수로 전달합니다. 

 

printf("Hello. %s\n Your grade is %d\n", name, grade); // 혼합 출력 

 

 

■ 서식 지정자(format specifier)

 

1 % '%' 출력 printf("%%\n");
2 c 문자(char) 출력 printf("%c\n", 'D');
3 s 문자열(char[]) 출력 printf("%s\n", "ABC");
4 d 부호있는 정수 출력 printf("%d\n", -10);
5 u 부호없는 정수 출력 printf("%u\n", 10);
6 o 부호없는 정수를 8진수로 출력, 숫자 앞에 '0'은 안 붙여줌 printf("%o\n", 10);
7 x 부호없는 정수를 16진수(소문자)로 출력, 숫자 앞에 '0x'은 안 붙여줌 printf("%x\n", 10);
8 X 부호없는 정수를 16진수(대문자)로 출력, 숫자 앞에 '0x'은 안 붙여줌 printf("%X\n", 10);
9 f 부동소수점 출력 printf("%f\n", 3.14);
10 e/E 부동소수점을 지수표기법으로 출력 printf("%e\n", 3.14);
printf("%E\n", 3.14);
11 p 포인터값을 출력 printf("%p\n", (void*)name);

 

3  "%s" 대신 곧바로 문자열을 printf에 넣어도 되지만 어떤 컴파일러에서는 warning을 주는 경우가 있습니다. 무효하지는 않습니다.

5  %u" 에 부호있는 수를 넣을 경우 해당 수의 비트 패턴에 해당하는 부호없는 수가 출력됩니다. 

7 "%X"는 있는데 "%O"가 없는 이유: 8진수는 숫자로만 이루어져 있기 때문에

11 "%p"는 주소를 출력하는데 void*만 받음: 모든 주소는 어차피 길이가 같으니 어떤 포인터를 void*로 캐스팅해도 안전하니까

 

 

 

-----------------------------------

C언어 문법 총정리

목록 보러가기 

-----------------------------------

 

 

반응형


댓글