문자열 입력 변환

문자열 입력 변환 (String Input Conversions)

scanf로 문자열이나 문자 값을 읽을 때 쓰는 입력 변환이 따로 있어요. 바로 %s%c죠. 두 변환이 공백 처리 방식에서 크게 달라지니 그 차이를 중심으로 볼게요.

출처: String Input Conversions

본문

%c 변환은 가장 단순해요. 항상 고정된 개수의 문자를 일치시킵니다. 최대 필드 폭이 읽을 문자 수를 나타내는데, 최대값을 지정하지 않으면 기본값은 1이에요. 이 변환은 시작 부분의 공백 문자를 건너뛰지 않습니다. 정확히 다음 n개 문자를 읽고, 그만큼 못 얻으면 실패해요.

%s 변환은 공백이 아닌 문자들의 문자열을 일치시킵니다. 시작 부분의 공백은 건너뛰고 버리지만, 무언가를 읽은 뒤 다시 공백을 만나면 거기서 멈춰요.

예를 들어 입력:

 hello, world

%10c 변환으로 읽으면 " hello, wo"가 나오지만, 같은 입력을 %10s 변환으로 읽으면 "hello,"가 돼요. %c는 시작 공백을 포함해 정확히 10자를 읽는 반면, %s는 앞 공백을 건너뛰고 hello,까지 읽고 다음 공백에서 멈추기 때문이죠.

더 알아보기

  • octave-output-conversion-syntax — 출력 변환 문법
  • octave-other-output-conversions — 기타 출력 변환