목차
- 입력의 scanf 함수
1. 입력의 scanf 함수
키보드에 타이핑하는 모든 내용은 문자로 저장됩니다.
뭐, 그래서 입력받은 데이터를 여러모로 바꾸는 과정이 필요해요.
이때 필요한 것이 scanf(스켄에프)함수입니다. (scanformatted)인데..
이 scanf 함수가 데이터를 바꾸는 데 사용하는 변환 문자는 printf 함수에서 사용하는 변환 문자와 거의 동일합니다.
대충 구조는 이렇게 생겼어요.
scanf("변환 문자", &받을 변수명);
예를 들어 123을 받으려면, scanf("%d", &a); 같이 쓰면 됩니다.
여담으로 scanf함수같이 메모리에 직접 접근하는 함수를 사용하면 VSC에서는 오류가 납니다.
해결방법으로는 scanf_s를 사용하거나, 프로그램의 맨 위에 #define _CRT_SECURE_NO_WARNINGS 를 입력하면 되요.
개인적으로는 후자를 추천해요. 전자는 다른곳에서는 못 쓰는지라..
일단, 한번 프로그래밍해보죠.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int input = 0;
scanf("%d", &input); //변수 input에 정수값 입력받음
printf("입력된 값 : %d",input); //입력받은 값 출력
return 0;
}
자, 출력은 어떻게 될까요.
몰라요, scanf는 출력을 입력에 따르는지라, 우리가 입력한 정수값이 나올겁니다.
아무튼 이런 프로그램을 실행하면 cmd(명령 프롬포트)가 멈춰있는데, 이 상황에 아무 숫자(123)같은걸 입력하면 출력이 나옵니다.
지금같은경우에는..
입력된 값 : 123
이 나오겠네요.
scanf를 사용할 때 몇 가지 유의점이 있는데, 저 위에 오류뿐만 아니라..
1. 변수명을 받을 때 &가 필요하고
(다만 문자열의 경우에는 &을 사용하지 않아요. 문자열은 문자의 배열이기 때문에, 배열이 이미 참조되어 있기 때문.. 이지만 어려우면 그냥 문자열은 안 쓴다고 외우세요)
2. 변환 문자와 맞는 데이터를 입력해야 해요.
안 그러면 터집니다.
당연하게도 scanf 함수도 printf 함수처럼 한번에 여러가지 변환문자를 받을 수 있어요.
메커니즘은 printf함수와 동일합니다.
그럼, 한번 여러가지 scanf 함수를 사용해보죠.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
char grade = '0'; //학점을 입력할 변수
int stats = 0; //성적을 입력할 변수
char name[20]; //이름을 입력할 배열
printf("학점과 성적을 입력하세요 :");
scanf("%c %d",&grade, &stats); //각 변수에 성적과 학점 입력
printf("이름을 입력하세요 : ");
scanf("%s", name); //배열에 이름 입력, &을 사용하지 않음.
printf("%s의 성적 : %d, 학점 : %c", name, stats, grade);
return 0;
}
자. 한번 해봅시다.
입력과 출력을 받으면..
학점과 성적을 입력하세요 :A 100
이름을 입력하세요 : 홍길동
홍길동의 성적 : 100, 학점 : A
빨간색이 입력입니다. 초록색이 출력이고요.
사실 검은색도 출력이긴 한데..
scanf 함수를 사용하려면 약간의 귀찮은 일이 있는데, 띄어쓰기와 엔터키를 조심해야한다는겁니다.
물론 웬만한 경우는 문제없는데, 저렇게 scanf 함수 안에 %d와 %d가 붙어 있을 경우에는 띄어쓰기로 분류하기 때문에..
뭐, 자세한건 나중에 배우고, 조심 좀 하시면 됩니다.
'프로그래밍 > C' 카테고리의 다른 글
그 외 연산자 (0) | 2025.04.16 |
---|---|
기본 연산자 (0) | 2025.04.15 |
변수 (0) | 2025.04.14 |
상수와 데이터 표현 (1) | 2025.04.14 |
C의 기본 구조와 데이터 출력 (0) | 2025.04.07 |