문자열 입력 변환
문자열 입력 변환 (String Input Conversions)
scanf로 문자열이나 문자 값을 읽을 때 쓰는 입력 변환이 따로 있어요. 바로 %s와 %c죠. 두 변환이 공백 처리 방식에서 크게 달라지니 그 차이를 중심으로 볼게요.
본문
%c 변환은 가장 단순해요. 항상 고정된 개수의 문자를 일치시킵니다. 최대 필드 폭이 읽을 문자 수를 나타내는데, 최대값을 지정하지 않으면 기본값은 1이에요. 이 변환은 시작 부분의 공백 문자를 건너뛰지 않습니다. 정확히 다음 n개 문자를 읽고, 그만큼 못 얻으면 실패해요.
%s 변환은 공백이 아닌 문자들의 문자열을 일치시킵니다. 시작 부분의 공백은 건너뛰고 버리지만, 무언가를 읽은 뒤 다시 공백을 만나면 거기서 멈춰요.
예를 들어 입력:
hello, world
을 %10c 변환으로 읽으면 " hello, wo"가 나오지만, 같은 입력을 %10s 변환으로 읽으면 "hello,"가 돼요. %c는 시작 공백을 포함해 정확히 10자를 읽는 반면, %s는 앞 공백을 건너뛰고 hello,까지 읽고 다음 공백에서 멈추기 때문이죠.
더 알아보기
- octave-output-conversion-syntax — 출력 변환 문법
- octave-other-output-conversions — 기타 출력 변환