2022. 11. 3. 22:59ㆍC언어
- printf
printf() 함수는 C언어의 표준 출력 함수입니다.
우리가 원하는 서식을 입력하면 그 서식에 맞춰 그대로 출력(stdout)해주는 함수입니다.
<printf() 함수의 원형>
#include <stdio.h>
int printf(const char* restrict format, ...);
- const char* format
출력할 데이터를 입력합니다.
ex)
"hello world"를 출력하고 싶다면 다음과 같은 코드를 통해 출력할 수 있습니다.
#include <stdio.h>
int main(void){
printf("hello world");
return 0;
}
printf() 에는 위와 같이 문자열 뿐만 아니라 변수의 값을 넣을 수도 있는데, 변수의 값를 출력하기 위해서는 서식 문자라는 것을 통해 출력할 수 있습니다.
서식 문자 | 출력 데이터 형태 |
%c | 하나의 문자 |
%s | 문자열 |
%d | 부호 있는 10진 정수 |
%u | 부호 없는 10진 정수 |
%f, %lf | 실수 ( %f = float, %lf = double ) |
%o | 부호 없는 8진 정수 |
%x, %X | 부호 없는 16진 정수 ( %x : 소문자, %X : 대문자 ) |
%p | 메모리 주소를 출력 |
%% | 기호 %를 출력 |
ex)
예를 들어, 변수 a에 저장된 5라는 값을 출력하고 싶다면 다음과 같이 하면 됩니다.
#include <stdio.h>
int main(void){
int a = 5;
printf("%d", a);
return 0;
}
서식 문자뿐만 아니라 특수 문자를 출력하기 위해 만들어진 이스케이프 시퀀스(escape sequence)를 통해 개행, 특수 문자 출력, Tab 등을 할 수 있습니다.
escape squence | 출력 내용 |
\' | 작은따옴표 |
\" | 큰따옴표 |
\? | 물음표 |
\\ | 백 슬래시(\) |
\n | 개행, 줄 바꿈 |
\t | 수평 탭 (Tab) |
#include <stdio.h>
int main(void){
int a = 5, b = 3;
printf("a = %d\n", a); // \n을 통해 줄 바꿈해서 다음 줄에 b의 값을 출력
printf("b = %d\n", b);
return 0;
}
/*
<출력결과>
5
3
*/
#include <stdio.h>
int main(void){
printf("\"hello world\"\n"); // \"를 통해 " 출력
return 0;
}
/*
<출력결과>
"hello world"
*/
- scanf
scanff() 함수는 C언어의 표준 입력 함수입니다.
사용자로부터 다양한 데이터를 서식에 맞춰 입력받을 수 있게 해줍니다.
<scanf() 함수의 원형>
#include <stdio.h>
int scanf(const char* restrict format, ...);
- const char* format
입력받을 서식을 정의합니다.
만약 정수를 a라는 변수에 입력받는다고 한다면
scanf("%d", &a);
이런 식으로 입력을 받을 수 있습니다.
- &의 의미
C언어에는 값을 전달할 때, 2가지 방식이 존재합니다. ( call by value VS call by reference )
2가지 방식의 개념은 포인터를 할 때, 자세히 정리하도록 하겠습니다.
지금은 call by value는 값을 복사하는 것, call by reference는 해당 주소에 있는 변수에 직접 값을 넣는다 정도로만 알고 계시면 될 것 같습니다.
* 참고
Visual Studio와 같은 툴을 이용해서 C언어를 사용하다 보면 보안 경고가 뜰 때가 있습니다.
이유는 scanf() 함수가 사용자에게 입력을 받을 때, 길이에 대한 검증 절차가 없기 때문입니다. ( 이를 통해 buffer overflow와 같은 공격을 할 수 있음 )
그래서 VS와 같은 툴에서는 scanf() 함수보다는 보안 조치가 포함된 scanf_s()를 사용하는 것을 권장하고 있습니다.
만약 scanf() 함수를 사용하고 싶다면
#define _CRT_SECURE_NO_WARNINGS
를 입력하면 됩니다.
참고한 곳들
- printf
https://blockdmask.tistory.com/472
[C언어/C++] printf 출력 함수 정리 및 예제
안녕하세요. BlockDMask입니다. 지난 시간에 scanf에 이어서 이번 시간은 C, C++에서 출력을 맡고 있는 printf라는 함수에 대해서 알아보려고 합니다. C언어를 시작할 때 콘솔 창에 문자, 숫자, 문자열 등
blockdmask.tistory.com
http://www.tcpschool.com/c/c_intro_printf
코딩교육 티씨피스쿨
4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등
tcpschool.com
- scanf
https://blockdmask.tistory.com/471
[C언어/C++] scanf 입력 함수 총정리 및 예제
안녕하세요. BlockDMask입니다. 오늘은 C언어, C++에서 사용자의 입력을 받을 수 있는 함수 scanf에 대해서 알아보려고 합니다. C언어에서 가장 기본이 되는 printf, scanf 함수 중 하나이므로 잘 알고 가
blockdmask.tistory.com
http://www.tcpschool.com/c/c_intro_scanf
코딩교육 티씨피스쿨
4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등
tcpschool.com
'C언어' 카테고리의 다른 글
C언어 - 연산자 (0) | 2022.11.09 |
---|---|
C언어 - 자료형, 상수, 변수 (0) | 2022.11.03 |
C언어 - 프로그램의 기본 구조 (0) | 2022.11.03 |