첫시작은 프린트함수에서 사용하는 기호부터 알아보겠습니다.
특수문자
|
의미
|
\a
|
경고음
|
\b
|
백스페이스(backspace),키보드에서 (←)
|
\f
|
폼 피드(form feed)
|
\n
|
개 행(띄어쓰기)
|
\r
|
캐리지 리턴(carriage return)
|
\t
|
수평 탭
|
\v
|
수직 탭
|
\'
|
작은따옴표 출력
|
\"
|
큰 따옴표 출력
|
\?
|
물음표 출력
|
\\
|
역슬래쉬 출력
|
별로 어렵지 않죠? 쓰는 예로는 밑에처럼.
ex)printf(" \a \b \f \n \r \t \v \' \" \? \\");
이렇게 쓰는건데, 의미는 위에 있는대로 합니다.
실험으로 자세히 알아보겠습니다.
1.\a
실행하면 본체에서 삐 소리가 난다.
2.\b
\b앞에 aa를 붙여놨다.
결과는 a하나만 출력
3.\f
처음엔 폼피드가 뭔가해서 사진처럼 저랬는데, 알고보니 프린트할 때, 저 기호부터 한 장을 뛰어넘은다음 프린트재개를하는 기호더라구요 ㅋㅋㅋ.
"이게뭐짘ㅋㅋㅋ"까지 프린트하고 여자성별표시부터 한 장 뛰어넘은 후, 인쇄 재개라고 합니다.
4.\r (\n은 모두 아실거라생각해서 패스)
이것은 캐리지리턴이라고 하는 명령을 하는 함수인데요.
사진을 보면서 설명하겠습니다.
보시면 출력엔 잉이 없어졌죠? 어떻게 된거냐면요.
\r뒤에있는것(띄어쓰기 한 칸)을 맨 앞에 덮어씌운겁니다.
다른 예를 보겠습니다.
\r뒤에 아무것도없어서 그대로 출력이 됩니다.
다른 예제를 보겠습니다.
잉잉과 \r뒤에 아 별~ㅠㅠ까지는 잉잉보다 훨씬 내용이 많습니다.
출력은 덮어씌우는거니까 \r앞에 있는 내용은 \r뒤에 있는 내용이 덮어 씌웁니다.
5.\t
보시는바와 같이 Tab키라보시면 되겠습니다.
6.\v
수직 탭이라는 것은 C언어에서는 저 이상한 기호하나만 출력하지만, 다른 컴파일에서는 LF(LineFeed) 역할을 한다고 한다.(라인피드는 알아서 검색하시길)
나머지는 다 무슨 뜻인지 알 것이라 생각한다.
두 번째, 서식문자의 종류와 그 의미.
서식문자
|
출력 대상 함수
|
출력 형태
|
%d
|
char, short, int
|
10진 정수
|
%ld
|
long
|
10진 정수
|
%lld
|
long long
|
10진 정수
|
%u
|
unsigned int
|
부호없는 10진 정수
|
%o
|
unsigned int
|
부호없는 8진 정수
|
%x,%X
|
unsigned int
|
부호없는 16진 정수
|
%f
|
float, double
|
10진수 방식의 부동소수점 실수
|
%Lf
|
long, double
|
10진수 방식의 부동소수점 실수
|
%e,%E
|
float, double
|
e 또는 E 방식의 부동소수점 실수
|
%g,%G
|
float, double
|
값에 따라 %f 와 %e 사이에서 선택
|
%c
|
char, short, int
|
값에 대응하는 문자
|
%s
|
char
|
문자열
|
%p
|
void
|
포인터의 주소 값
|
이것들을 어떻게 쓰는지는 여태까지 해온 결과로 다 아실 수 있을거라 믿습니다.
그런데 여기서 참고로 알아야 할 것들만 골라서 하겠습니다.
1.정수를 출력할 때,%o와 %x의 부가설명
%o와 %x는 각각 8진수 16진수 서식문자이다.
그런데, 이는숫자만을 출력한다. 그래서 %#o, %#x로 써준다.
그러면 확실히 "아! 이건 8진수구나, 아 이건 16진수구나."라고 알 수 있다.
2.실수를 출력할 때, %e, %g의 부가설명
%f는 0.000001을 그대로 출력하지만, %e는 0.000001을 1.0e-6으로 표현합니다.
눈치채신분도 있겠지만, 이는 1.0x10^-20(일점영곱하기십에마이너스이십제곱)이다.
그리고 %g는 소수점 4자리까지는 %f 처럼 출력하다가 5자리부터는 %e처럼 출력합니다.
실험으로 알아보겠습니다.
변수 초기화를 %f형식으로 입력해서 소수점 5째 자리부터 %e형식으로 출력합니다.
그리고, 변수를 %e형식으로 초기화해도 결과는 같습니다.
셋 째, 위에 표에는 없지만 필드 폭을 지정해서 출력하는 방법.
%10d: 필드 폭을 10칸 확보하고 오른쪽 정렬
%-10d: 필드 폭을 10칸 확보하고 왼쪽 정렬
※위에 d는 숫자냐 문자냐에 따라서 각각 다르다.(문자면s 정수면d 실수면f 등..)
마지막으로 실험을 통해서 알아본 뒤, 포스트를 마치는걸로 하겠습니다.
아시죠 변수로 저장 및 초기화 안하면 수라도 프린트함수에서 큰따옴표로 가둬야 한다는것!
근데 솔직히 저도 이거 정신없이해서 왜 결과가 이렇게 나왔는지 정확히 판단을 못하겠네요. 대충 이렇게 나온답니다. ㅋㅋㅋㅋㅋㅋ 아 무책임한것 봐.
아무튼 자야할시간이라 이번주 포스트는 여기서 마치겠습니다.
댓글 없음:
댓글 쓰기