scanf를 이용한 문자 입력 — 문자·문자열과 공백 | 기초 C언어 4.3.3

기초 C언어Chapter 04 변수 › Section 03 표준 입력 (scanf) › 03

4.3.3 scanf를 이용한 문자 입력

숫자가 아니라 글자를 받는 법. %c 와 %s 의 차이, 그리고 %s 에만 & 를 붙이지 않는 까닭.

교재 수록 위치
교재
『기초 C언어』 · 이은상 · 부크크 · 364쪽
단원
Chapter 04 변수 › Section 03 표준 입력 (scanf) › 03 scanf를 이용한 문자 입력
쪽수
105p ~ 106p2쪽
세부 내용
03 — 1 한 글자 입력받기(%c)105p · 2 문자열 입력받기(%s)105p · CODE 4.9106p
학습 목표
%c 와 %s 로 문자와 문자열을 입력받을 수 있고, %s 에 & 를 붙이지 않는 까닭을 설명할 수 있다.

01scanf — 숫자만 받는 것이 아님교재 105p

  • 받을 수 있는 것 셋 — 숫자 · 한 글자 · 문자열. 셋 다 scanf 하나로 해결함. 달라지는 것은 큰따옴표 안의 변환 지정자와, 받아 둘 변수의 자료형뿐임.
  • %c — 캐릭터(character)의 c. 받는 글자는 반드시 하나뿐임. %s — 스트링(string), 곧 문자열의 s. 여러 문자가 나열된 것을 받음.

02한 글자를 받을 때 — %c교재 105p

  • 받을 자리를 먼저 마련 — 글자 하나가 들어갈 char 변수를 미리 선언해 둠.
  1. scanf("%c", &grade);
  • & 를 함께 씀 — 값을 저장할 자리를 변수의 주소로 알려 주기 위함. 숫자를 받을 때와 똑같은 방식이고, 지정자만 %c 로 바뀐 것뿐임.

03여러 글자를 받을 때 — %s 와 문자 배열교재 105p

  • 문자 배열 — C언어에는 문자열 자료형이 따로 없고 문자를 나란히 늘어놓은 배열로만 다룸. 담아 둘 배열을 먼저 선언해야 함.
  1. char name[10];
  2. scanf("%s", name);
  • 열 자리에 아홉 자 — name[10] 은 열 칸을 마련하지만, 마지막 한 자리는 문자열의 끝을 알리는 널 문자의 몫임.

여기서 자주 틀림

%s 로 문자 배열에 값을 받을 때는 변수 이름 앞에 & 를 붙이지 않음. 배열의 이름 자체가 배열이 시작되는 메모리 주소이기 때문. 숫자 입력에서는 & 를 빠뜨리는 것이 가장 흔한 잘못이었지만, 문자열에서는 거꾸로 붙이지 않아도 될 & 를 습관처럼 붙이는 것이 가장 흔한 잘못임. 까닭은 포인터 단원에서 다루므로, 지금은 규칙으로 외워 둘 것.

04%s 는 공백에서 멈춤교재 106p

  • 공백이 곧 문자열의 끝 — scanf 는 스페이스 · 탭 · 엔터를 문자열의 끝으로 인식함.
  • 앞부분만 저장됨 — LEE EUN SANG 을 쳐 넣어도 name 에 담기는 것은 첫 공백 앞의 LEE 까지임.
  • 뒤에 남은 글자는 버려지지 않고 입력 통로에 그대로 머무름 — 공백을 건너 이름 전체를 받는 법은 8장 문자열의 입력과 출력에서 다룸.

전체 코드와 줄별 해설은 교재 106p CODE 4.9 에 있습니다.

이 절의 핵심 정리

  1. %c는 char 변수에 글자 하나를 받고, 변수 앞에 &를 붙인다.
  2. %s로 문자열을 받으려면 담을 문자 배열을 미리 선언해야 한다.
  3. %s에는 &를 붙이지 않는다 — 배열 이름이 그 자체로 시작 주소이기 때문이다.
  4. char name[10]에 담을 수 있는 글자는 널 문자를 뺀 9자다.
  5. %s는 첫 공백에서 끊겨 앞부분만 저장한다.
강의 자료4.3.3 scanf를 이용한 문자 입력 1 / 9

번호를 누르면 해당 장으로 바로 이동합니다 · 방향키 ← → 로도 넘길 수 있습니다
다음 절 · 5.1.1 산술 연산자 교재 120p~122p — 아직 공개 전입니다. C언어 강의 목록에서 공개된 편을 확인하실 수 있습니다. ↗

더 자세한 내용은 교재에서

이 글은 『기초 C언어』 105p~106p의 내용을 강의 영상에 맞춰 핵심만 간추린 요약입니다. 각 개념의 상세한 설명과 예제, 실습 코드, 임용시험 기출문제 풀이는 교재에서 다루고 있습니다.

댓글

이 블로그의 인기 게시물

2007년 국가직 9급 기계일반 기출문제 풀이

열역학의 개요 — 계·상태량·열과 일, 제1·제2법칙 | 기초 열역학 1.1