오늘 주로 다룰 내용
printf의 다양한 활용!
1. printf("출력 Data");
2. printf("출력서식", 출력 Data);
3. printf("출력서식", 변수 이름);
(내일 할 예정)
어제와 같은 방식으로 소스파일을 만들어준다.
오늘 주로 다룰 것은 어제 다 하지 못한 printf이기 때문에 이름을 printf로 설정했다.
확장자명 c도 꼭 기억하자!
또 기억해야 하는 것이 #include <stdio.h>이다. 잊지 말자!
1. printf("출력 Data");
그럼 printf의 1번 유형부터 해보자.
매우 간단하다.
그런데 이렇게 출력을 할 때, 키보드에 있는 키 중 그대로 출력이 되지 않는 3개가 있다.
큰따옴표("), 원화표시(역슬래시(\)), 퍼센트(%)
큰따옴표는 아예 에러가 나오게 되며, 역슬레쉬와 퍼센트는 출력이 되지 않는다.
큰따옴표는 문법에 혼동을 주기 때문에 에러가 나오는 것이다.
뒤에 두 개의 키는 그 키가 가진 코딩에서의 역할 때문이다.
예를 들면 이렇게 코딩을 하면 어떻게 출력이 될까?
처음 코딩을 하는 사람은 분명
aaa
bbb
로 출력 될 것이라 예상할 것이다.
그러나 그렇지 않다.
이렇게 출력되는 이유는 줄 바꿈을 우리가 명령하지 않았기 때문이다.
이런 경우처럼 특정한 명령(줄 바꿈, 들여 쓰기 등)을 할 수 있게 만들어주는 키가 바로
\(역슬래시, 원화표시)이다.
줄 바꿈은 \n을 입력하면 적용이 된다.
그럼 \로 쓸 수 있는 다른 기능들은 무엇이 있을까?
\a 경고음 소리 발생
\b 백스페이스
\f 폼 피드
\n 개행
\r 캐리지 리턴
\t 수평 탭
\v 수직 탭
\\ 역슬래시
\' 작은따옴표
\" 큰따옴표
그럼 %는 왜 나오지 않을까? 그건 바로 printf의 2번째 유형과 관련되어 있다.
2. printf("출력서식", 출력 Data);
c언어의 data 종류 4가지
1. 정수 숫자(integer) : 10, 273, -5
2. 실수 숫자(float) : 3.14, -5.55
3. 한 문자(character) : 'A', 'z', '+'
4. 문자열(string) : "Hello", "안녕", "ㄱ"
그렇다면 여기서 짚고 넘어가야 할 문제
10 <> 10.0
5 <> '5'
'A' <> "A"
(<>는 같지 않다)
서식문자
%d(%i) ▷ 정수
%o ▷ 8진수로 보기
%x ▷ 16진수로 보기
%f ▷ 실수
%c ▷ 한 문자
%s ▷ 문자열
이를 적용해보면 이렇게 쓸 수가 있다.
그럼 이렇게 쓰는 이유는 무엇일까?
우선 3+5를 계산하게 하고 결과값을 출력하고 싶다고 가정해 보자.
이렇게 쓰면 결과값이 8로 나오지가 않는다.
하지만 이 유형을 사용하면 우리가 원하는 결과 값을 출력할 수 있다.
이 유형을 이용할 때 주의할 점이 있다.
뒤에 출력 data를 쓰지 않는 경우 이상한 값(garbage value)이 출력된다.
그리고 녹색 물결표시로 문제가 있음을 보여준다. (비주얼 스튜디오 똑똑해)
다른 부분을 안 적어도 비슷한 오류가 발생하니 꼭 서식에 맞게 작성하여야 한다.
이렇게 출력 서식을 여러 개 사용해 출력도 가능하다.
컴퓨터는 그렇게 똑똑하지 않아서 순서대로 입력해줘야 한다.
즉 "%d %f"를 서식으로 썼다면, 그에 맞는 데이터를 순서대로 입력해야 한다.
여기서 한발 더 나아가서
만약 성적표를 만든다고 가정해 보자.
그럼 숫자가 여러 줄에 거쳐 여러 항목에 나올 것이다.
ex)
30 70 60
80 40 100
5 3 8
그런데 점수의 배열이 맞지 않는 상황이 발생한다.
그렇다면 딱 맞추는 방법이 있을까?
있다.
필드의 폭을 지정할 수 있다.
방법은 아주 쉽다.
%와 그 뒤에 영문자 사이에 몇 자리를 차지하게 설정할 것인지 입력하면 된다.
사이에 3개만큼의 필드폭을 입력해주면 이렇게 오른쪽 정렬이 된다.
왼쪽 정렬을 하고 싶으면 숫자 앞에 -를 입력해주면 된다.
그럼 빈칸에 0을 넣은 상태로 출력도 가능할까?
있다.
바로 0 삽입키워드이다.
숫자 앞에 0만 입력해주면 된다.
이 방법은 문자나 문자열에도 적용이 가능하다.
그리고 %c의 쓰임에서는 예외사항이 있는데...
바로 아스키코드가 가진 0~127의 값이다.
그래서 그 값을 65로 지정해 줘도 'A'로 입력한 값과 같은 값이 나온다.
반대로 %d에 'A'를 넣어줘도
65의 값이 나타난다.
8진수나 16진수를 입력하고 싶은 경우도 반드시 있을 것이다.
8진수의 경우 숫자 앞에 0(옥타..)을 붙여주는 것이고
16진수의 경우 숫자 앞에 0x(헥사..)를 붙여주면 된다.
'# 개발 > C언어' 카테고리의 다른 글
c언어 연습문제 #2 (국비4일차) (0) | 2023.01.04 |
---|---|
c언어 #3 - 변수, scanf (국비4일차) (0) | 2023.01.04 |
c언어 연습문제 #1 (국비3일차) (0) | 2023.01.03 |
c언어 #1 - c언어 실행부터 컴파일까지 (국비2일차) (0) | 2023.01.02 |
c언어 #0 - 비주얼 스튜디오 설치 (국비2일차) (0) | 2023.01.02 |