1. 변환명세
정수 |
%d |
int형 |
정수를 10진수 형태로 출력 |
실수 |
%lf |
double형 |
실수를 소수점 아래 6자리까지 출력 |
문자 |
%c |
char형 |
문자 한 개만 출력 |
문자열 |
%s |
문자열 |
문자열 출력 |
2. 변환명세의 필드폭, 플래그 지정
(1) 정수형 (예제코드, 실행결과, 주석설명)
변환명세 앞의 숫자는 자릿수를 나타낸다.
여기서 %5d의 결과로는 자릿수를 5자리 주고, 왼쪽정렬이 기본이다.
'+'를 붙이면 부호가 붙고, '-'를 붙이면 오른쪽 정렬이 된다.
(2) 실수형 (예제코드, 실행결과, 주석설명)
실수형에서는 %lf 앞의 숫자는 전체 자릿수를 말한다.
예를 들어 %7.3lf 가 있으면 전체자리수는 7자리가 되고, '.'뒤의 3은 소숫점 아래 숫자를 말한다.
(3) 문자형 (예제코드, 실행결과, 주석설명)
(4) 문자열형 (예제코드, 실행결과, 주석설명)
3. 문자, 문자열 출력함수
(1) putc() : 예제코드, 실행결과, 주석설명
(2) puts() : 예제코드, 실행결과, 주석설명
4. 성적출력 프로그램 (프로그램3-2, p91)
5. 입력함수
(1) 형식 : scanf("변환명세",&변수명);
(2) 변환명세 종류
정수 |
%d |
int형 |
10진수 정수를 입력받아 정수형 변수에 저장 |
실수 |
%lf |
double형 |
입력 값을 double형 변수에 저장 |
문자 |
%c |
char형 |
입력된 문자 한 개를 문자형 변수에 저장 |
문자열 |
%s |
문자열 |
입력된 문자들을 문자열을 저장하기 위한 변수나 배열에 저장 |
6. scanf()를 이용하여 여러개의 자료 입력방법 4가지
(1) 공백(space bar)
(2) tab키
(3) enter key
(4) ,(쉼표) - scanf()문 안의 변환명세 사이에 쉼표로 구분을 지어줬을 때
7. 문자전용 입력함수 getchar() 예제코드(p100), 실행결과
8. 문자열 전용 입력함수 gets() 예제코드(p106), 실행결과
* 문자를 입력할 때 사용하는 scanf()함수를 사용할 때 입력 값에 공백문자가 입력이 되면 문장의 종료로 인식이 된다.
* 공백도 문자열로 인식하게 하고싶을 때 gets()함수를 사용한다.
9. gets()와 scanf()의 차이점
scanf() 함수에서 공백을 만나면 그 이후의 문자들은 인식을 하지 못한다.
이름을 입력받을때 '홍 길동'으로 입력하게 되면 출력결과로믄 '홍' 이라는 한글자만 출력된다.
gets()함수는 이런점과는 다르게 공백도 문자열로 인식하여 공백을 출력 할 수 있게 한다.
10. 프로그램3-5 소스코드, 실행결과에서 발생한 문제점 설명
소스 코드와 결과에서 볼 수 있는 것 처럼 성별입력 부분에서 오류가 발생하여 입력과 출력이 되지 않는것을 확인할 수 있다.
그 이유는 성별을 입력 받기 전 키를 입력할 때 눌렀던 enter키가 버퍼에 저장되며 성별 입력 부분에서 현재 버퍼에 저장되어있는
enter이 gender 값으로 입력과 출력이 되는 것을 확인 할 수있다.
이 문제를 해결하기 위해 소스코드를 수정해 보았다.
11. 프로그램3-5의 해결방법 - fflush()함수 설명
성별을 입력 받기 전에 버퍼를 비워주는 함수인 fflush(stdin); 을 사용해 버퍼를 비워주니 정상적으로 실행이 되었다.
*fflush(stdin); → 표준 입력 장치용 버퍼 안의 내용을 모두 제거하는 함수로 다음에 나오는 입력문은 항상 키보드에서 새로운 자료를 입력받게 된다.
'공부 > C programming' 카테고리의 다른 글
실습 정리하기! (0) | 2016.03.18 |
---|---|
실습 (0) | 2016.03.16 |
실습 (0) | 2016.03.11 |
2. 변수와 자료형 (0) | 2016.03.10 |
g (0) | 2016.03.08 |