printf 함수 이야기
특수문자의 출력이 필요한 이유
- 문자열에 포함이 되는 특수문자는 작은 따옴표로 묶어서 독립된 문자상수로도 존재할 수 있다.
char ch='\n';
- 큰 따옴표는 문자열의 시작과 끝으로 해석이 되니, 큰 따옴표 자체의 출력을 원하는 경우에는 큰 따옴표 앞에 \ 문자를 붙이기로 함
printf("앞집 강아지가 말했다. \"멍~! 멍~!\" 정말 귀엽다.");
printf 함수의 서식지정
- printf의 f는 formatted(서식이 지정된)을 의미 즉, 서식이 지정된 형태의 출력
- 출력양식이 만들어진 상태에서 출력을 진행한다
“제 나이는 10진수로 12살, 16진수로 C살입니다.”
"제 나이는 10진수로 %d살, 16진수로 %X살입니다." // 대문자 X면 알파벳 대문자, 소문자 x면 알파벳 소문자
서식 문자의 종류와 그 의미
- %d = char, short, int
- %ld = long
- %lld = long long
- %u = unsigned int(부호 없는 10진수 정수)
- %o = unsigned int (부호 없는 8진수 정수) 8진수를 8진수답게 출력하려면 %#o
- %x, %X = unsigned int(부호 없는 16진수 정수) 16진수를 16진수답게 출력하려면 %#x
- %f = float, double
- %Lf\= long double
- %e, %E = float, double(e 또는 E 방식의 부동소수점 실수)
- %g, %G = float, double(값에 따라 %f와 %e 사이에서 선택)
- %c = char, short, int(값에 대응하는 문자)
- %s = char *(문자열)
- %p = void *(포인터의 주소 값)
필드 폭을 지정하여 정돈된 출력 보이기
- 출력의 형태는 기본적으로 오른쪽 정렬이다!
- %8d = 필드 폭을 8칸 확보하고, 오른쪽 정렬해서 출력을 진행한다.
- %-8d = 필드 폭을 8칸 확보하고, 왼쪽 정렬해서 출력을 진행한다.
#include <stdio.h>
int main(void)
{
printf("%-8s %14s %8s \n", "이 름", "전공학과", "학년");
printf("%-8s %14s %5d \n", "김동수", "전자공학", 3);
printf("%-8s %14s %5d \n", "이을수", "캄퓨터공학", 2);
printf("%-8s %14s %5d \n", "한선영", "미술교육학", 4);
return 0;
}
// 결과
이 름 전공학과 학년
김동수 전자공학 3
이을수 캄퓨터공학 2
한선영 미술교육학 4
scanf 함수
정수 기반의 입력형태 정의
- scanf 함수는 printf 함수의 상대적인 기능
- 어떻게 받아들일 거니?
- 어디에 저장할까?
- %d = 10진수 정수의 형태로 데이터를 입력 받는다.
- %o = 8진수 양의 정수의 형태로 데이터를 입력 받는다.
- %x = 16진수 양의 정수의 형태로 데이터를 입력 받는다.
#include <stdio.h>
int main(void)
{
int num1, num2, num3;
printf("세 개의 정수 입력: ");
scanf("%d %o %x", &num1, &num2, &num3);
printf("입력된 정수 10진수 출력: ");
printf("%d %d %d \n", num1, num2, num3);
return 0;
}
// 결과
세 개의 정수 입력: 12 12 12 // 똑같은 정수 12를 입력해도, 실제 저장되는 값에는 차이가 있다.
입력된 정수 10진수 출력: 12 10 18
실수 기반의 입력형태 정의
- printf에서는 %f, %e, %g의 의미가 각각 달랐지만, scanf 함수에서는 ‘float형 데이터를 입력 받겠다' 라는 동일한 의미를 담고 있다.
- %lf = double
- %Lf = long double
#include <stdio.h>
int main(void)
{
float num1;
double num2;
long double num3;
printf("실수 입력1(e 표기법으로): ");
scanf("%f", &num1);
printf("입력된 실수 %f \n", num1);
printf("실수 입력2(e 표기법으로): ");
scanf("%lf", &num2);
printf("입력된 실수 %f \n", num2);
printf("실수 입력3(e 표기법으로): ");
scanf("%Lf", &num3);
printf("입력된 실수 %Lf \n", num3);
return 0;
}
// 결과
실수 입력1(e 표기법으로): 1.1e-3
입력된 실수 0.001100
실수 입력2(e 표기법으로): 0.1e+2
입력된 실수 10.000000
실수 입력3(e 표기법으로): 0.17e-4
입력된 실수 0.000017
- 위 결과를 바탕으로 알 수 있는 점
- 실수의 입력과정에서 e 표기법을 사용해도 된다.
- float, double, long double의 데이터 출력에 사용되는 서식문자는 각각 %f, %f, %Lf이다.
- float, double, long double의 데이터 입력에 사용되는 서식문자는 각각 %f, %lf, %Lf이다.
- 서식문자 %s가 문자열의 입력에 사용된다.
'C' 카테고리의 다른 글
변수의 존재기간과 접근범위 (0) | 2025.03.12 |
---|---|
조건에 따른 흐름의 분기 (0) | 2025.03.12 |
반복 실행을 명령하는 반복문 (0) | 2025.03.12 |
C 언어 자료형 (0) | 2025.03.12 |
자료형 및 Byte 개념 (0) | 2025.03.12 |