c언어 scanf로 데이터 입력받기!

지금까지 printf 함수를 사용해서 화면에 결과값을 보여주는 것들을 자연스럽게 사용해왔습니다. printf함수로 화면에 결과값을 출력 했다면 이번에는 결과값을 입력하는 함수를 배워볼건데요. c언어에서는 scanf를 사용해서 데이터를 입력할 수 있습니다. 

 

scanf로 정수 입력받기

scanf로 정수를 입력받기 위해서는 어떻게 해야될까?? scanf 함수의 사용법은 우리가 이전에 사용해왔던 printf 함수의 사용법과 동일한 방법으로 사용되어 집니다. 다만 scanf에서 입력받을 변수를 선언할 때 변수명 앞에 '&'를 같이 붙여줘야 합니다. 

 

int a이 변수를 scanf에서 입력받을 변수로 지정할때에는 &a로 선언 해줘야 한다! 

 

위에 코드대로 정확하게 입력하고 실행했다면 아무것도 표시되어지지 않고 커서만 깜빡깜빡 거릴 뿐입니다. 여기에 아무 숫자나 입력하고 엔터를 처봅시다. 

그러면 입력된 숫자와 함께 "입력받은 정수는 : (입력받은 숫자) 입니다."라고 표시되고 프로그램은 끝나게 됩니다. 코딩 을 한 순서대로 화면에 scanf로 입력을 기다리고 있고 입력이 있기 전까지 다음 줄에 있는 printf는 대기 하고 있다가 7번 줄의 scanf의 행동이 끝나고 난 뒤에 8줄의 printf가 실행 되어지는 순서입니다. 

#include <stdio.h>

int main(void) {

	int a;
	
	scanf("%d", &a);
	printf("입력받은 정수는 : %d 입니다.", a);

	return 0;
}

 

C4996에러 'scanf':This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use_CRT_SECURE_NO_WARNINGS라는 오류코드가 발생했다면?

 

위에 소스를 정확하게 입력했는데 'C4996의 에러메시지를 받았다 visual studio 2019의 컴파일러는 시스템 보안 문제 때문에 scanf가 안전하지 않다고 하면서 컴파일을 하지 못하도록 했습니다. 에러 메시지를 읽어보면 'scanf 함수가 안전하지 않습니다. 대신 scanf_s를 사용하세요. 지원을 중단하려면 _CRT_SECURE_NO_WARNINGS 를 사용하세요. 라고 되어있습니다. 

 

#include <stdio.h>

int main(void) {

	int a;
	
	scanf_s("%d", &a);
	printf("입력받은 정수는 : %d 입니다.", a);

	return 0;
}

에러 메시지에서 설명했던대로 위에 소스코드처럼 scanf 함수를 scanf_s 함수로 변경해서 사용하는 방법이 있습니다. 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {

	int a;
	
	scanf("%d", &a);
	printf("입력받은 정수는 : %d 입니다.", a);

	return 0;
}

또 다른 방법으로는 소스코드의 첫번째 줄에 #define _CRT_SECURE_NO_WARNINGS를 입력하는 방법이 있습니다. 

 

_CRT_SECURE_NO_WARNINGS에 대해서는 다음에 다시한번 다뤄 보도록 하겠습니다. 

 

scanf로 문자, 문자열 입력받기 

위에서는 정수를 입력받아서 정수를 출력하는 방법을 배웠습니다. 이번에는 문자와 문자열을 입력받아서 사용하는 방법에 대해서 알아보겟습니다. 

 

이번에는 입력받을때 "문자 입력:"을 표시하도록 코딩을 해봤습니다. 

 

문자 입력 : 이 표시되고 난 다음에 scanf 함수에 값이 입력될때까지 기다리다가 scanf에 값이 입력되면 다음 함수를 실행!

scanf를 활용한 문자 입력은 수식문자 %c로 입력받고 %c로 출력하는 방식으로 사용할 수 있습니다. 

 

문자열의 입력은 문자 배열의 변수를 선언하고 해당 변수를 scanf로 입력받아 문자열을 입력받을 수 있습니다. 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {

	char a[20];

	printf("문자열 입력:");
	scanf("%s", &a);
	printf("변수a에 입력된 문자열 : %s \n", a);


	return 0;
}

 

scanf로 두개 이상의 변수를 입력받기

위에서 살펴본 scanf는 다양한 변수는 정수와 문자, 문자열 등 다양한 입력이 가능하나는 것을 확인 했습니다. 지금 까지는 하나의 변수를 입력받고 출력했었는데 이번에는 두개 이상의 변수를 입력하는 방법에 대해서 살펴보겠습니다. 

 

scanf에는 여러개의 변수를 활용해서 데이터를 입력받을 수 있는데 이러한 데이터의 경계는 (스페이스바, Tab키, Enter키)로 구분되어 변수를 입력받습니다. 

 

콘솔 화면에서 데이터를 입력할때 1입력하고 엔터, 2는 스페이스바, 3은 tab으로 입력을 한 결과입니다. 소스 코드를 가지고 입력할때 스페이스바, enter키, tab키를 활용해서 한번씩 입력되어지는 결과를 확인해 보시고 다양한 자료형의 데이터를 연속으로 입력해보는 것도 한번씩 하면서 데이터 입력에 대해서 공부하시는 것도 좋습니다. 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {

	int a, b, c, d;

	printf("정수 입력:");
	scanf("%d %d %d %d", &a, &b, &c, &d);
	printf("입력된 정수 a = %d, b = %d, c = %d, d = %d \n ", a, b, c, d);


	return 0;
}

 

댓글

Designed by JB FACTORY