C 언어를 사용해 문자 한 개, 문자열, 그리고 문장(공백을 포함한 문자열)을 차례대로 입력받아 그대로 출력하는 프로그램을 만들어 보겠습니다. 여기서 문자열의 최대 크기는 500으로 설정합니다.
예를 들어 입력이 다음과 같다고 가정해 봅시다.
character = 'T' string = "ProgrammingLanguage" sentence = "I love programming through C"
그렇다면 출력 결과는 다음과 같습니다.
Your character: T Your string: ProgrammingLanguage Your sentence: I love programming through C
문제 해결 접근 방법
이 문제는 다음 단계를 따라 해결할 수 있습니다.
문자(character)를 입력받을 때는
scanf("%c", &character);를 사용합니다.문자열(string)을 입력받을 때는
scanf("%s", string);을 사용합니다. 참고로%s는 공백이나 줄바꿈을 만나면 입력을 중단합니다.이 단계는 선택 사항이지만, 상황에 따라 반드시 필요할 수 있습니다. 때때로 프로그램이 다음 입력을 기다리지 않고 건너뛰는 문제가 발생하는데, 이때
fflush(stdin)으로 입력 버퍼를 비워 주면 해결됩니다.공백이 포함된 문장을 입력받을 때는
fgets()함수를 사용합니다. 첫 번째 매개변수는 문자열을 저장할 배열, 두 번째는 최대 크기, 마지막은 콘솔(표준 입력)로부터 데이터를 받기 위한 stdin입니다.마지막 항목은 문자열의 끝을 나타내는 줄바꿈(new line) 문자가 필요하다는 의미입니다. 이를 처리하지 않으면 공백까지 모두 문자열에 포함되어 버립니다.
예제 코드
다음 구현 예제를 통해 더 자세히 이해해 보겠습니다.
#include <stdio.h>
int main(){
char character;
char string[500];
char sentence[500];
scanf("%c", &character);
scanf("%s", string);
fflush(stdin);
fgets(sentence, 500, stdin);
printf("Your character: %c\n", character);
printf("Your string: %s\n", string);
printf("Your sentence: %s\n", sentence);
}
입력
T ProgrammingLanguage I love programming through C
출력
Your character: T Your string: ProgrammingLanguage Your sentence: I love programming through C
핵심 정리
단일 문자 입력에는
scanf("%c"), 공백 없는 문자열에는scanf("%s")를 사용합니다.공백이 포함된 문장은
fgets()로 입력받아야 하며, 버퍼에 남은 줄바꿈 문자를 제거하기 위해fflush(stdin)호출이 필요할 수 있습니다.fgets()는 줄바꿈 문자까지 함께 저장하므로, 필요하다면 별도로 제거하는 것이 좋습니다.