문자열 상수는 값을 바꿀 수 없으므로 바꿀 수 있는 문자열을 원한다면 char 배열을 사용해야 합니다. 배열에 문자열을 입력하는 방법은 다양한데, 일단 scanf 함수를 사용해보겠습니다.
scanf 함수는 %s를 사용하여 공백이 없는 연속된 문자들을 입력받습니다. 간단한 예제를 통해 scanf 함수가 문자열을 입력하는 과정과 특징을 살펴보겠습니다.
// scanf 함수를 사용한 문자열 입력
int main(void)
{
char str[80];
printf("문자열 입력 : ");
scanf("%s", str); // %s를 사용하고 배열명을 준다.
printf("첫 번째 단어 : %s\n", str); // 배열에 입력된 문자열 출력
scanf("%s", str);
printf("버퍼에 남아 있는 두 번째 단어 : %s\n", str);
return 0;
}
scanf 함수는 버퍼를 사용하므로 키보드로 입력한 문자열은 Enter를 누를 때 버퍼에 저장됩니다. 그 후에 scanf 함수는 버퍼에서 문자열을 가져와 배열에 저장하는데 중간에 공백 문자, 탭 문자, 개행 문자가 있으면 그 이전까지만 저장합니다.
실행결과와 같이 공백 문자를 포함해 apple jam이라고 입력한 경우를 예로 설명하겠습니다. 8행에서 최초 입력받은 apple jam에서 공백 문자 이전까지만 저장하므로 9행에서 apple만 출력합니다. 물론 배열에 저장한 문자열의 끝에는 널 문자를 붙여서 문자열을 완성합니다.
나머지 문자열 jam은 어떻게 될까요? 여전히 jam은 버퍼에 남아 있으며 다음에 호출되는 함수가 입력에 사용합니다. 코드로 다시 돌아가 보겠습니다.
10행에서 scanf 함수를 또 호출했습니다. 버퍼에 문자열이 남아 있으므로 키보드로부터 문자열을 새로 입력받지 않고 버퍼에 남아 있는 문자열을 가져와 배열에 저장합니다. 이때 중간에 있는 공백 문자나 탭 문자, 개행 문자는 모두 걸래내므로 다음 단어인 jam을 입력합니다. 따라서 str 배열에 jam이 입력되고 끝에 널 문자가 추가됩니다.
'프로그래밍언어 > C 언어' 카테고리의 다른 글
[C 언어] fgets 함수를 사용한 문자열 입력 (0) | 2022.12.09 |
---|---|
[C 언어] get 함수를 사용한 문자열 입력 (1) | 2022.12.09 |
[C 언어] char 포인터로 문자열 사용 (0) | 2022.12.09 |
[C 언어] 문자열 상수 구현 방법 (0) | 2022.12.09 |
[C 언어] 입력 버퍼 지우기 (0) | 2022.12.09 |