1 / 24

04 전처리와 입출력

2007 1 학기. 04 전처리와 입출력. 헤더파일. 텍스트 파일 헤더파일 (header file) 은 확장자가 * .h 로 전처리기 지시자인 #include, #define 등과 자료형의 재정의 , 함수의 원형 (prototype) 을 포함하는 텍스트 파일 다음은 함수 main() 위에 항상 끼워 넣은 헤더 파일 stdio.h 의 일부 위 헤더파일은 시스템 헤더파일로 개발도구에서 제공하는 헤더파일  . … typedef unsigned int size_t; …

lara-love
Télécharger la présentation

04 전처리와 입출력

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 2007 1학기 04 전처리와 입출력

  2. 헤더파일 • 텍스트 파일 • 헤더파일(header file)은 확장자가 *.h로 • 전처리기 지시자인 #include, #define 등과 자료형의 재정의, 함수의 원형(prototype)을 포함하는 텍스트 파일 • 다음은 함수 main() 위에 항상 끼워 넣은 헤더 파일 stdio.h의 일부 • 위 헤더파일은 시스템 헤더파일로 개발도구에서 제공하는 헤더파일   … typedef unsigned int size_t; … #define EOF (-1) … _CRTIMP int __cdecl printf(const char *, ...); … #define getchar() getc(stdin) #define putchar(_c) putc((_c),stdout) … Perfect C

  3. 시스템, 사용자 헤더파일 • 사용자 헤더 파일 • 사용자가 직접 작성한 헤더파일은 지시자 #include를 이용하는 경우 • 헤더파일의 큰 따옴표는 헤더파일이 기술된 폴더와 시스템 인클루드 폴더를 차례로 검색 • 시스템 헤더 파일은 대부분 개발도구가 설치된 폴더에서 하부 [include]라는 이름의 폴더에 존재 • 시스템 헤더 파일 #include <stdio.h> #include “myheader.h” Perfect C

  4. 사용자 헤더파일 • myheader.c와 myheader.h로 나누어 처리 • 헤더 파일 myheader.h는 소스 myheader.c와 동일한 폴더에 저장 • Visual C++에서의 헤더 파일 • VisualC++에서는 개발 도구 환경에서 사용자가 직접 만든 헤더 파일만을 구분할 수 있는 창을 제공 Perfect C

  5. 기호상수 정의 • #define • 전처리기 지시자인 #define은 소스에서 지정된 기호상수를 정의된 치환문자열로 대체(치환)하는 역할 수행 • 장점 • 지시자 #define은 시스템에 따라 변할 수 있는 상수를 한번에 수정할 수 있고, 수정되는 한 부분만 검사하면 되므로 이식성과 신뢰성이  증대 • 예제 4-3 Perfect C

  6. #define #include <stdio.h> #define PRTLINE printf(“\n”); int main(void) { PRTLINE //전처리기가 printf(“\n”);로 치환함 return 0; } ------------------------------------------------- #define SQUARE2 2 * 2 #define SQUARE3 3 * 3 …. printf(“%d, %d”, SQUARE2, SQUARE3); //전처리가 printf(“%d, %d”, 2 * 2, 3 * 3);로 치환 Perfect C

  7. 인자의 이용 • 인자가 있는 매크로의 치환 Perfect C

  8. 주의 사항 • 괄호의 이용 • 공백에 의한 오류 • 예제 4-4 : #define CUBE(x) ( (x) * (x) * (x) ) • 예제 4-5 : #define PHI 3.14 #define ROUND(r) (2 * PHI * (r) ) Perfect C

  9. 자료형의 재정의 • typedef • 키워드 typedef를 이용하여 이미 정해진 자료 유형을 다른 이름으로 재정의 • typedef unsinged long u_long; • 자료 재정의 필요성 • 터보 C++에서 자료 유형 int는 저장공간의 크기가 2바이트이나 비쥬얼 C++는 4바이트 • 개발도구가 변하면 자료 유형이 맞지 않아 오류가 발생함 • int 형이 2 바이트인 개발 환경에서는 typedef 문만 변경하면 나머지 프로그램 수정하지 않아도 됨으로 편리 (예) typedef long myint; Perfect C

  10. 예제 소스 • typedef.c Perfect C

  11. 표준입력 • 함수 scanf() • 간단한 정수의 입력 • &은 주소를 의미하는 연산자 Perfect C

  12. 함수 scanf()에서 임의의 갯수의 입력을 받을 수 있고, 이런 경우 적절히 변환 명세를 이용하여 입력 값을 지정 변환 명세 scanf(“%d %f”, &age, &weight); Perfect C

  13. 예제 소스 Perfect C

  14. 예제 소스 • mydata.c • 키보드로부터 키, 8진수, 16진수, 몸무게, 혈액형을 입력 받아 저장, 출력하는 프로그램 • 각각의 입력 값을 저장할 자료형을 고려하여 변수를 선언한 후 함수 scanf()를 이용하여 입력 값을 저장 • 문자 입력 • 155쪽 소스 24라인을 주의 • 함수 scanf()를 호출하는 인자가 “\n%c” • 만일 여러분이 무심코 24라인을 scanf(“%c”)로 코딩하였다면 프로그램 실행에서 원하는 결과가 나오지 않음 • 몸무게를 입력한 후 Enter 키를 누른 값이 \n으로 입력되고, 이 후 입력하는 문자가 변수 blood에 저장되게 하기 위함 Perfect C

  15. 출력 함수 • 함수 printf() • 모든 종류의 자료형을 출력하는 함수 • 제어문자열과 표현식을 이용하여 출력하는데, 제어문자열(control string)에는 출력하려는 표현식 값에 따라 변환명세 (conversion specification)를 차례로 기술 • 변환명세는 변환문자열이라고도 표현 • 제어문자열 내부의 변환명세는 표현식의 수와 값의 종류에 따라 서로 순서대로 일치  ( scanf 의 변환 명세와 동일한 명세 사용 ) printf (“ … %d … %f …“, 정수표현식, 실수표현식); Perfect C

  16. 정수 값의 필드 폭 • 출력하려는 정수 값의 필드 폭(width) 지정 • %d 사이에 폭을 나타내는 정수를 기술 Perfect C

  17. 실수의 필드 폭 • 부동소수형을 출력하는 경우 • 변환명세에서 필드 폭(width)을 지정하려면 %f 사이에 폭을 기술 Perfect C

  18. 출력 제어 문자의 이용 • 출력제어문자(escape sequences) • 탈출 기법을 이용한 문자를 함수 printf()에서 제어문자열이나 표현식에서 이용이 가능 Perfect C

  19. 예제 소스 • printescape.c Perfect C

  20. 예제 소스 • fieldwidth.c • 다음과 같은 출력이 나오도록 함수 printf()의 제어문자열과 변환명세를 고려하여 프로그램을 작성 Perfect C

  21. 문자 입출력 • 문자 하나 • 문자 하나를 입력하고 출력하기 위한 함수가 getchar()와 putchar() • 이 함수를 이용하려면 헤더 파일 stdio.h 파일을 첨가 • 함수 getchar()를 이용하여 문자를 하나 입력 받으려면 인자가 없는 getchar()를 이용 • 입력 받은 문자를 저장하려면 자료형 char나 정수형으로 선언된 변수를 이용하여 저장 • 문자의 출력은 함수 putchar()의 인자에 출력하려는 문자를 기술하여 출력 • char c; • c = getchar(); • putchar(c); Perfect C

  22. 이해점검 • C 언어에서 헤더파일을 첨가하는 지시자는 (#include )이다. • 사용자가 직접 작성한 헤더파일은 지시자 #include를 이용하는 경우, ( “” )를 이용하여 헤더파일을 기술한다. • 전처리기 지시자인 ( )은 소스에서 지정된 기호상수(symbolic constant)를 정의된 치환문자열로 대체한다. • 함수 printf()에서 출력 값의 정렬은 기본적으로 ( 오른쪽 ) 정렬이다. • 함수 printf()에서 출력 값의 정렬을 왼쪽으로 지정하려면 문자 ( - )를 % 다음에 기술하여 이용한다. • 표준 출력으로 함수 printf()를 이용하듯이, 표준 입력으로는 함수 ( scanf())를 이용한다. • 함수 scanf()에서 표준입력으로 값을 입력 받아 변수에 저장하려면 일반 변수 앞에는 반드시 주소를 의미하는 문자 ( & )가 앞에 와야 한다. • 함수 scanf()에서 double 자료형을 소수 형태로 입력 받으려면 변환명세를 (%lf )라 기술한다. • 문장 ( typedef )는 C 언어의 일반 문장으로 이미 사용되는 자료형을 새로운 자료형으로 정의할 수 있는 기능이다. • 문자 하나를 입력하는데 이용하는 함수는 ( getchar )이다. Perfect C

  23. 프로그래밍 실습 • 프로그램 목적 • 자료형 double인 원의 반지름을 입력 받아, 원의 둘레와 원의 면적을 구하는 프로그램을 작성 • 헤더 파일과 매크로를 작성 • 헤더파일 circle.h • 원주율 3.14를 PHI 정의 • 매크로 CIRCUM(x)은 인자 x가 반지름인 원에서 원의 둘레를 구하는 매크로를 정의 • 매크로 AREA(x)는 인자 x가 반지름인 원에서 원의 면적을 구하는 매크로를 정의 Perfect C

  24. Thank You ! 노력 없이 이룰 수 있는 것 아무것도 없다.

More Related