안녕하세요, 그라티입니다.
오늘은 C언어에서의 입력 함수인 'scanf'에 대해 자세히 알아보겠습니다.
scanf함수는 사용자로부터 입력을 받는 데 사용되는데요, 다양한 서식 문자열을
활용하여 원하는 데이터 타입으로 입력을 받을 수 있습니다.
1. 기본 사용법
'scanf' 함수의 가장 기본적인 사용법은 변수에 값을 입력받는 것입니다. 일반적으로 사용되는 서직 문자열은 다음과 같습니다.
- %d : 정수 입력
- %f : 실수 입력
- %c : 문자 입력
- %s : 문자열 입력
- %x : 16진수 입력
예를 들어, 사용자로부터 정수를 입력받아 그 값을 출력하는 코드입니다.
#include <stdio.h>
int main() {
int num;
printf("숫자를 입력하세요: ");
scanf("%d", &num);
printf("입력하신 숫자는 %d 입니다.\n", num);
return 0;
}
2. 여러 개의 입력받기
'scanf' 함수를 사용하면 한 번에 여러 개의 값을 입력받을 수도 있습니다. 서식 문자열을 연속해서 사용하면 각각의 변수에 값을 입력받을 수 있습니다.
예를 들어, 사용자로부터 두 개의 정수를 입력받아 더한 값을 출력하는 코드입니다.
#include <stdio.h>
int main() {
int num1, num2;
printf("두 개의 숫자를 입력하세요(예: 3 4): ");
scanf("%d %d", &num1, &num2);
printf("두 수의 합은 %d 입니다.\n", num1 + num2);
return 0;
}
3. 입력 공백 처리
입력받을 때 공백이나 개행 문자를 처리하는 방법도 알아봅시다. 문자나 문자열을 입력받을 때 공백을 포함하려면 서직 문자열에 '[^\n]' 을 사용합니다. 이를 사용하면 개행 문자가 입력될 때까지 문자를 입력받을 수 있습니다.
예를 들어, 사용자로부터 공백을 포함한 문자열을 입력받아 출력하는 코드입니다.
#include <stdio.h>
int main() {
char str[100];
printf("문장을 입력하세요: ");
scanf("%[^\n]", str);
printf("입력하신 문장은: %s\n", str);
return 0;
}
4. 서식 문자열 안의 공백 처리
때로는 입력받을 데이터 사이에 공백이 필요할 수 있습니다. 이 경우, 서식 문자열 안에 공백을 추가하면 됩니다. 예를 들어, 사용자로부터 '시간:분' 형식으로 시간을 입력받는 코드는 다음과 같습니다.
#include <stdio.h>
int main() {
int hours, minutes;
printf("시간과 분을 입력하세요(예: 12:34): ");
scanf("%d:%d", &hours, &minutes);
printf("입력하신 시간은 %d시 %d분 입니다.\n", hours, minutes);
return 0;
}
5. 입력 버퍼 처리
'scanf' 함수를 사용할 때 입력 버퍼에 남은 데이터 때문에 문제가 발생할 수 있습니다. 이를 해결하기 위해 'getchar()' 함수를 사용하여 입력 버퍼를 비워주는 방법이 있습니다.
에를 들어, 사용자로부터 문자와 숫자를 연속해서 입력받는 코드입니다.
#include <stdio.h>
int main() {
char ch;
int num;
printf("문자를 입력하세요: ");
scanf("%c", &ch);
getchar(); // 입력 버퍼 비우기
printf("숫자를 입력하세요: ");
scanf("%d", &num);
printf("입력하신 문자와 숫자는 %c와 %d입니다.\n", ch, num);
return 0;
}
이렇게 C언어의 'scanf' 함수에 대해 자세히 알아보았습니다.
다양한 서식 문자열과 옵션을 활용하면 원하는 형태로 입력을 받을 수 있습니다.
모르시는 내용이 있으면 댓글로 남겨주세요~~~!

'IT > 프로그래밍' 카테고리의 다른 글
C언어에서의 출력 함수 : printf의 모든 것 (0) | 2023.04.11 |
---|---|
C언어에서 출력과 입력 : printf와 scanf 알아보기 (0) | 2023.04.08 |
C언어 기초 배우기 : 변수 선언, 반환 값 (0) | 2023.04.06 |