printf, scanf
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가 문자열의 입력에 사용된다.