본문 바로가기

카테고리 없음

공백 무시하고 char 문자 입력 받는 방법을 알려주는 scanf의 사용법

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 함수는 공백을 구분자로 사용하여 입력을 받기 때문에 공백을 포함한 문자열을 입력받기에는 적합하지 않다는 것을 주의해야 합니다.