1. scanf 함수의 기본 개념 및 사용법
scanf 함수는 C 언어에서 사용되는 표준 입력 함수로, 사용자로부터 입력을 받아 변수에 값을 저장하는 역할을 합니다. 대표적으로 키보드로부터 값을 입력받는 경우에 자주 사용됩니다.
1.1 기본 사용법
scanf 함수의 기본적인 형식은 다음과 같습니다:
scanf("형식 지정자", &변수);
- "형식 지정자"는 입력 받을 값의 타입을 지정하는 역할을 합니다. 예를 들어, 정수를 입력받을 경우
%d
, 실수를 입력받을 경우%f
를 사용합니다. &
연산자는 변수의 주소를 의미합니다. scanf 함수는 입력받은 값을 해당 변수에 저장하기 위해 변수의 주소를 필요로 합니다.
1.2 여러 개의 값 입력받기
scanf 함수를 이용하여 여러 개의 값을 한 번에 입력받을 수도 있습니다. 이때 입력받을 값들은 공백으로 구분되어야 합니다. 예를 들어, 정수와 실수를 한 번에 입력받을 때는 다음과 같이 사용할 수 있습니다:
scanf("%d %f", &정수변수, &실수변수);
여기서 %d
는 정수변수에 값을 저장하기 위한 형식 지정자이고, %f
는 실수변수에 값을 저장하기 위한 형식 지정자입니다.
1.3 반환 값
scanf 함수는 입력받은 값의 개수를 반환합니다. 즉, 성공적으로 입력받은 값의 개수를 반환하는데, 이를 통해 사용자가 입력한 값이 예상과 일치하는지 확인할 수 있습니다.
주의할 점은 scanf 함수는 입력 버퍼에 있는 값을 읽어오기 때문에, 이전에 입력받은 값이 남아있을 수 있다는 점입니다. 따라서 scanf 함수를 연속적으로 사용할 때는 이전 입력의 영향을 없애기 위해 입력 버퍼를 청소해주어야 합니다. 이를 위해 아래와 같이 코드를 작성할 수 있습니다:
int c;
while ((c = getchar()) != '\n' && c != EOF) { }
위의 코드는 입력 버퍼에 있는 값들을 모두 읽어들이는 역할을 합니다.
위에서 설명한 scanf 함수의 기본 개념과 사용법을 숙지한다면, 공백을 무시하고 char 문자를 입력받는 방법을 더욱 쉽게 이해할 수 있을 것입니다.
2. scanf 함수를 이용한 공백 무시하고 char 문자 입력 받는 방법
scanf 함수는 기본적으로 공백을 구분자로 사용하여 입력을 받습니다. 그렇기 때문에 문자열을 입력받을 때는 공백을 포함한 한 줄 전체를 입력받을 수 있습니다. 하지만, 공백을 무시하고 문자 하나만 입력받기 위해서는 다른 방법이 필요합니다.
2.1 공백 무시하기
scanf 함수의 형식 지정자 중 %c
를 사용하여 문자 하나를 입력받을 수 있습니다. 그리고 %c
형식 지정자 뒤에 공백을 제거하기 위해 스페이스(%*c
)를 추가하여 사용할 수 있습니다. 예를 들어, 다음과 같이 공백을 무시하고 char 문자를 입력받을 수 있습니다:
char ch;
scanf(" %c", &ch);
위의 코드에서 " %"는 공백을 의미하고, %c
는 char 문자를 입력받기 위한 형식 지정자입니다. 이렇게 코드를 작성하면 사용자가 공백 없이 문자만 입력하더라도 공백을 무시하고 문자를 입력받을 수 있습니다.
2.2 개행 문자 무시하기
키보드로 문자를 입력받을 때 주의해야 할 점은 개행 문자('\n'
)도 입력으로 받는다는 것입니다. 개행 문자는 Enter 키를 누를 때 자동으로 입력되는 문자로, 입력 버퍼에 남아있을 수 있습니다. 이 때문에 이후의 입력을 원하는 대로 받지 못할 수 있습니다.
개행 문자를 무시하기 위해서는 %*c
를 사용하여 개행 문자를 읽어들이도록 코드를 작성할 수 있습니다:
scanf(" %c%*c", &ch);
위의 코드에서 %*c
는 개행 문자를 읽어들인 다음에 버리기 위한 형식 지정자입니다. 이렇게 작성하면 개행 문자를 무시하고 다음 입력을 받을 수 있습니다.
위의 방법을 사용하여 scanf 함수를 이용하여 공백을 무시하고 char 문자를 입력받을 수 있습니다. 다만, 주의할 점은 이 방법은 한 문자만 입력받을 수 있으며, 공백을 포함한 문자열을 입력받을 수는 없다는 것입니다. 이를 해결하기 위해서는 fgets 함수를 사용하여 입력을 받을 수 있습니다.
3. scanf 함수를 이용한 한글로 글쓰기
scanf 함수를 이용하여 한글을 입력받는 방법은 다른 언어와 동일합니다. 한글 문자열을 입력받기 위해서는 %s
형식 지정자를 사용하면 됩니다.
3.1 기본 사용법
한글을 입력받기 위해서는 다음과 같이 scanf 함수를 사용할 수 있습니다:
#define _CRT_SECURE_NO_WARNINGS // scanf 함수 사용 시 필요한 선언문
#include <stdio.h>
int main() {
char str[100];
printf("한글 입력: ");
scanf("%s", str);
printf("입력된 문자열: %s\n", str);
return 0;
}
위의 코드에서 %s
는 문자열을 입력받기 위한 형식 지정자입니다. str
은 입력된 문자열을 저장할 문자열 배열입니다.
3.2 공백을 포함한 문자열 입력받기
만약 공백을 포함한 한 줄 전체를 입력받고 싶다면, fgets 함수를 사용하는 것이 더 적합합니다. fgets 함수는 공백을 포함하여 한 줄 전체를 읽어들이는 함수로, 다음과 같이 사용할 수 있습니다:
#define _CRT_SECURE_NO_WARNINGS // fgets 함수 사용 시 필요한 선언문
#include <stdio.h>
int main() {
char str[100];
printf("한글 입력: ");
fgets(str, sizeof(str), stdin);
printf("입력된 문자열: %s\n", str);
return 0;
}
위의 코드에서 fgets(str, sizeof(str), stdin);
은 공백을 포함한 문자열을 입력받기 위해 사용한 코드입니다. str
은 입력된 문자열을 저장할 문자열 배열입니다. sizeof(str)
은 str
의 크기를 나타내는 값입니다. stdin
은 입력을 받을 스트림으로, 여기서는 사용자로부터 입력을 받는 표준 입력을 의미합니다.
위의 방법을 사용하여 scanf 함수를 이용하여 한글로 글을 쓸 수 있습니다. 다만, scanf 함수는 공백을 구분자로 사용하여 입력을 받기 때문에 공백을 포함한 문자열을 입력받기에는 적합하지 않다는 것을 주의해야 합니다.