공부/C programming

3. 입력과 출력

natom_ 2016. 3. 13. 18:14
반응형

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