1. printf 함수
#include <stdio.h>
int main(void)
{
printf("Be happy");
printf("My friend");
return 0;
}
파이썬에 print, js에 console.log 가 있다면 C에는 printf 함수가 있다.
#include <stdio.h> 이 헤더파일을 불러와야 한다. 여기서 stdio 는 Standard input output 의 약자로 표준 입출력을 의미한다.
printf는 print formatted의 약자로 일정한 형식에 따라 출력한다는 의미이다.
기본적으로 printf에 변환문자를 설정하지 않으면 문자열을 출력한다.
[실행결과]
Be happyMy friend
파이썬에 print, js에 console.log과는 다르게 기본적으로 개행을 하지 않는다. 이는 제어 문자를 통해서 조절할 수 있다.
※puts() 함수가 개행을 기본적으로 제공하는데, 위 글 범위에 벗어나므로 여기서 설명하지는 않겠다.
2. 제어 문자
제어문자란 출력 방식에 영향을 주는 문자를 말한다.
백슬래시 \ (\가 키보드에 없다면 한/영을 영어로 전환한 뒤 ₩ 버튼)를 앞에 붙여서 표현한다.
제어 문자 | 출력 결과 |
\n (new line) | 다음줄로 개행 |
\t (tab) | tab만큼 이동 |
\b (backspace) | 커서를 왼쪽으로 한 칸 이동 |
\r (carriage return) | 커서를 그 줄의 맨 앞으로 이동 |
\\ | \ 를 출력 |
\' | '를 출력 |
\" | "를 출력 |
\a (alert) | 벨소리를 낸다고 하는데 한번도 해본적 없음 |
복습차원 그리고 혹시나 처음 접하실 분들을 위해 표로 만들어 봤다.
여기서 \r 캐리지 리턴(CR)이 조금 신경써야 할 경우가 있을 수 있다.
\n 을 Line Feed 로 (LF)라고도 부르는데, 개행을 할 때 운영체제에 따라서 조합이 다르다.
리눅스나 mac(과거에는 캐리지리턴을 사용했지만 현재는 LF)는 개행을 할 때 LF 로 개행하고
윈도우에서는 CR로 커서를 앞으로 당긴후 LF로 개행한다.
※정리
리눅스, mac | LF : \n |
윈도우 | CRLF : \r\n |
실제로 mac에서 문제 없이 풀던 문제가 윈도우 노트북을 사용했을 때 잘 안풀렸던 적이 있는데,
입력값을 \n을 기준으로 분할했을 때, 각 배열의 원소 뒤에 \r이 붙어있어서 오류가 발생했던 적이 있다.
2-1 예시코드와 함께 설명
#include <stdio.h>
int main(void)
{
printf("Be happy\n");
printf("My\tfriend\n");
printf("Goot\bd\tchance\n");
printf("Cow\rW\n");
return 0;
}
[실행 결과]
Be happy
My friend
Good chance //빨간 글씨는 실제로 빨간 글씨가 아니라 설명을 위한 빨간 글씨입니다.
Wow
위에서 \b와 \r이 조금 생소할 수 있으므로 보충설명을 하자면
Goot 에서 \b 때문에 커서가 t앞에 있다가 t뒤로 이동한다.
그 상태에서 d 가 입력되니 t는 d로 치환된 것이다.
마찬가지로 Cow까지 입력되었는데 \r로 커서가 제일 앞인 C뒤로 이동한 상태에서 W입력을 받으니 Wow가 되었다.
3. 변환 문자
printf는 기본적으로 문자열을 출력하지만, 변호나 문자로 포맷을 정해줄 수 있다.
앞에 %를 붙이고 뒤에 형식을 표시하는 문자를 붙여 사용한다.
너무 많아서 ai의 도움을 받으면
%d, %i : 부호 있는 10진 정수(signed decimal integer)를 표시
%u : 부호 없는 10진 정수(unsigned decimal integer)를 표시
%x, %X : 부호 없는 16진 정수(unsigned hexadecimal integer)를 표시 `%x`는 소문자, `%X`는 대문자
%o : 부호 없는 8진 정수(unsigned octal integer)를 표시
%e, %E : 지수형식으로 부동소수점 값을 출력 %e 는 소문자 (예: 3.14e+01), %E 는 대문자 (예: 3.14E+01)를 사용
%a, %A : 16진수로 표현된 부동소수점 값을 출력. %a 는 소문자, %A 는 대문자를 사용
%c : 문자(character) 형식의 값을 출력
%s : 문자열(string) 형식의 값을 출력
%p : 포인터(address) 값을 출력
%% : 문자 `%`(퍼센트) 자체를 출력
지금껏 주로 사용한 것은 굵은 글씨로 표시된 4개 정도이다.
3-1 예시코드와 함께 설명
printf("내가 좋아하는 숫자는 %d이다.", 10);
[실행결과]
내가 좋아하는 숫자는 10이다.
가장 기본적인 사용법으로 printf 함수의 문자열 속에서 변환 문자를 넣고 쉼표로 구분한 뒤, 해당 변환 문자의 자료형에 맞는 값을 넣어주면 출력할 때, 해당 값이 들어가서 출력된다.
printf("%d과 %d를 더하면 %d이 나온다.", 4, 6, 4+6);
[실행결과]
4와 6을 더하면 10이 나온다.
또한 변환 문자는 하나의 printf 함수에서 여러개 동시 사용이 가능하다.
순서는 앞에서 부터 차례대로 매칭되며, 그렇기 때문에 변환 문자의 수와 출력해줄 값의 숫자가 동일 해야한다.!
printf("%f\n", 3.4);
printf("%.1f\n", 3.45);
[실행결과]
3.400000
3.5
C에서는 실수의 소수점 자릿수를 따로 지정해주지 않으면 기본적으로 6자리까지 출력하고 출력하는 마지막 자리는 반올림을 적용한다.
소수점 자리의 지정은 %와 f (혹은 lf) 사이에 '.' 을 찍고 자릿수를 입력해 주면 된다.
위 코드에서는 3.45를 소수점 한자리까지 출력하라고 했으며
소수점 두번째 자리인 5는 반올림에서 올리는 값이므로 3.5가 출력된다.
'Language > C' 카테고리의 다른 글
혼공C (6장) - 반복문 (while, do while, for) (0) | 2024.03.20 |
---|---|
혼공C (5장) - 선택문, 조건문 (if, else if, else, switch, case) (0) | 2024.03.20 |
혼공C (4장) - 연산자 (형변환, sizeof, 복합대입, 비트연산) (0) | 2024.03.08 |
혼공C (3장) - 변수와 scanf를 사용한 데이터 입력 (1) | 2023.11.28 |
혼공C (2장-기초) - Main함수, 주석 (0) | 2023.07.29 |