printf 함수


문자열을 출력하는 함수

1
2
3
4
5
6
7
8
9
10
11
#include<stdio.h>
 
int main()
{
    printf("I like puppy! \n");
    printf("I like C! \n");
    printf("I need a job \n");
    
    return 0;
}
 

cs


I like puppy!

I like C!

I need a job


쉽게 문자열을 출력할 수 있다. 문자열 안에 있는 \n은 바로 특수문자,이스케이프 시퀸스(excape sequence) 라고 한다.


예를들어 


앞집 강아지가 말했다. "멍~! 멍~!" 정말 귀엽다.


라는 문장은 출력하려면 문제가 존재한다.


printf("앞집 강아지가 말했다. "멍~! 멍~!" 정말 귀엽다.");


위와 같이 출력을 하면


"앞집 강아지가 말했다." < 하나의 문자열

멍~! 멍~! < 에러

"정말 귀엽다" 문자열


위처럼 에러가 발생한다. 이 문제를 해결하고자 특수문자가 존재한다.


큰 따옴표는 문자열의 시작과 끝으로 해석이 되므로 중간에 쓰기 위해선 따옴표 앞에 \ 문자를 붙여주면 된다.


printf("앞집 강아지가 말했다. \"멍~! 멍~!\" 정말 귀엽다.");


특수문자에는 여러개가 있지만 몇가지만 소개하겠다.


\a 경고음          \n 개 행            \v 수직탭

\b 백스페이스       \r 캐리지 리턴        \? 물음표 출력

\f 폼피드          \t 수평 탭           \\ 역슬래쉬 출력


printf의 f는 (formatted(서식이지정된)) 을 의미한다. 

서식이 지정된 형태의 출력이라는 것은 출력양식이 만들어진 상태에서 출력을 진행한다는 뜻이다.

printf함수를 이용하면, 문자열 안에 정수나 실수를 포함해서 출력하는 등의 출력양식을 직접 지정할 수 있다.



1
2
3
4
5
6
7
8
9
10
11
#include<stdio.h>
 
int main()
{
    int myAge=12;
    
    printf("제 나이는 10진수로 %d살,16진수로 %X살 입니다.\n",myAge,myAge);
    
    return 0;
}
 

cs


제 나이는 10진수로 12살,16진수로 C살입니다.


%d %X는 서식문자라고 하는데 이를 이용해 서식을 지정한다.

첫 번째 인자로 우리가 지정한 서식화된 문자열을 전달하고 있고, 그 안에는 두개의 서식문자가 있다.

이 둘에 대한 출력대상이 바로 그 뒤에 이어지는 두 번째 인자와, 세 번째 인자를 통해서 전달된다.


서식문자의 종류

서식문자                출력대상                     출력 형태

   %d       char, short, int         부호 있는 10진수 정수형

   %o           unsigned int          부호 없는 8진수 정수형

   %X           unsigned int         부호 없는 16진수 정수형

   %f          float, double     10진수 방식의 부동소수점 실수

   %c       char, short, int              값에 대응하는 문자

   %s                  char*                       문자열

   %p                  void*               포인터의 주소 값


8진수를 8진수답게, 16진수를 16진수답게 출력하고 싶다면, %o와 %x사이에 #을 넣어주면 된다.


%o %#o = 7 07

%x %#x = d 0xd


%s를 이용한 문자열의 출력

1
2
3
4
5
6
7
8
9
#include<stdio.h>
 
int main()
{
    printf("%s %s %s\n","AAA","BBB","CCC");
    
    return 0;
}
 

cs

출력결과

AAA BBB CCC

서식문자에는 출력의 필드 폭을 지정하는 옵션을 추가할 수 있다.
%8d    - 필드 폭을 8칸 확보하고, 오른쪽 정렬해서 출력을 진행한다.
%-8d   - 필드 폭을 8칸 확보하고, 왼쪽 정렬해서 출력을 진행한다.

scanf함수

printf함수와는 반대로 출력이 아닌, 입력에 사용한다. scanf함수 호출을 위해서는 두가지 정보가 전달되어야 한다.
입력의 형식 - 어떻에 받아들일 건지
입력의 장소 - 어디에 저장할 건지

입력의 형식을 지정할 때, 서식문자를 사용한다.
%d 10진수 정수
%o 8진수 양의정수 
%x 16진수 양의정수

ex)
1
2
3
4
5
6
7
8
9
10
11
12
13
#include<stdio.h>
 
int main()
{
    int n1,n2,n3;
    printf("세개의 정수 입력:");
    scanf("%d %o %x",&n1,&n2,&n3);
    
    printf("세개의 정수 10진수 출력:%d %d %d",n1,n2,n3);
    
    return 0;
}
 

cs

출력결과
세개의 정수 입력: 12 12 12
세개의 정수 10진수 출력 : 12 10 18 (  10진수, 8진수, 16진수)

실수를 입력받을 때에는 %f가 아닌 %lf로 입력을 받아야한다. printf()함수로 출력시에만 %f이다.
또한 문자열을 사용할 시에는 &연산자가 있으면 안된다. 이에 대한 것은 배열을 공부하고 포스팅 하겠다.!

'programming > C' 카테고리의 다른 글

C// 조건에 따른 흐름의 분기  (0) 2017.12.11
C // 반복문  (0) 2017.12.07
C // 상수와 기본 자료형  (0) 2017.12.01
C // 변수와 연산자  (0) 2017.11.28
C // C의 기본  (0) 2017.11.27

+ Recent posts