C언어에서는 scanf 함수로 사용자로부터 값을 입력받습니다. 이 함수의 사용법 및 예시를 알아봅니다.
[ Contents ]
1. scanf
scanf(출력형식, &변수);
scanf는 사용자로부터 값을 입력받는 함수입니다. 출력형식으로 어떻게 값을 입력을 받을지 설정하고, 변수에 값을 대입합니다. 여기서 &변수임을 주의해야 합니다. 변수명이 아니라, 변수의 주소가 들어갑니다. (&는 변수의 주소를 반환하는 주소연산자)
int i;
scanf("%d", &i);
위 코드는 정수형 변수 i에 사용자 값을 입력받는 코드입니다.
int i;
char str[10];
scanf("%d %s", &i, str);
printf("%d %s", i, str);
위와 같이 한 번에 여러 개의 데이터를 입력받을 수도 있습니다.
배열은 변수명 자체가 '배열 주소'를 내포하고 있기 때문에, 굳이 &를 할 필요가 없습니다.
(배열은 배열의 첫번째 항목 주소를 가르킴)
2. 공백을 포함하여 입력받기
scanf("%[^\n]s", str);
scanf함수는 공백을 기준으로 나누어서 입력받습니다. 그래서 scanf("%d %s", &i, str) 가 가능했죠.
하지만 문자열의 경우에는 공백까지 포함해서 입력 받아야할 수 있습니다. 그럴 때에는 [^\n]을 포함하면 됩니다.
char str[20];
scanf("%[^\n]s", str);
printf("%s", str);
3. scanf_s
scanf에 secure의 약자인 s를 덧붙인 함수입니다.
scanf는 일단 입력한 그대로 받기 때문에, 변수의 크기보다 큰 경우인 '오버플로우'가 많이 발생했습니다. 그래서 scanf_s함수가 나왔으며, scanf_s는 문자형을 입력받을 때 사이즈 크기도 인자로 입력해야 합니다.
scanf_s( "%s", str, sizeof(str) );
scanf_s는 세번째 인자 크기만큼만 문자열을 받습니다.
cf) 에디터 오류
#define _CRT_SECURE_NO_WARNINGS
간혹 마이크로소프트 비주얼 스튜디오처럼 깐깐한 에디터에서는 scanf_s를 사용하지 않는다고 오류를 낼 수도 있습니다. 그럴 때에는 include문 밑에 위 코드를 추가해서 해결할 수 있습니다.
'PL (Programming Language) > C' 카테고리의 다른 글
[C] printf 함수로 출력형식 지정하기 (출력 자릿수 고정, 소수 반올림) (0) | 2023.04.19 |
---|---|
[C] 프로그래밍 함수의 정의와 출력함수 printf() (0) | 2022.01.15 |
[C] stdio.h 라이브러리와 printf(), int main(), return 0; (0) | 2022.01.15 |
[C] C언어 컴파일러 설치 (비주얼 스튜디오, Dev c++) (0) | 2022.01.14 |
[C] C언어란? 기원과 특징, 공부방법 (0) | 2022.01.13 |
댓글