240 likes | 406 Views
2007 1 학기. 04 전처리와 입출력. 헤더파일. 텍스트 파일 헤더파일 (header file) 은 확장자가 * .h 로 전처리기 지시자인 #include, #define 등과 자료형의 재정의 , 함수의 원형 (prototype) 을 포함하는 텍스트 파일 다음은 함수 main() 위에 항상 끼워 넣은 헤더 파일 stdio.h 의 일부 위 헤더파일은 시스템 헤더파일로 개발도구에서 제공하는 헤더파일 . … typedef unsigned int size_t; …
E N D
2007 1학기 04 전처리와 입출력
헤더파일 • 텍스트 파일 • 헤더파일(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
시스템, 사용자 헤더파일 • 사용자 헤더 파일 • 사용자가 직접 작성한 헤더파일은 지시자 #include를 이용하는 경우 • 헤더파일의 큰 따옴표는 헤더파일이 기술된 폴더와 시스템 인클루드 폴더를 차례로 검색 • 시스템 헤더 파일은 대부분 개발도구가 설치된 폴더에서 하부 [include]라는 이름의 폴더에 존재 • 시스템 헤더 파일 #include <stdio.h> #include “myheader.h” Perfect C
사용자 헤더파일 • myheader.c와 myheader.h로 나누어 처리 • 헤더 파일 myheader.h는 소스 myheader.c와 동일한 폴더에 저장 • Visual C++에서의 헤더 파일 • VisualC++에서는 개발 도구 환경에서 사용자가 직접 만든 헤더 파일만을 구분할 수 있는 창을 제공 Perfect C
기호상수 정의 • #define • 전처리기 지시자인 #define은 소스에서 지정된 기호상수를 정의된 치환문자열로 대체(치환)하는 역할 수행 • 장점 • 지시자 #define은 시스템에 따라 변할 수 있는 상수를 한번에 수정할 수 있고, 수정되는 한 부분만 검사하면 되므로 이식성과 신뢰성이 증대 • 예제 4-3 Perfect C
#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
인자의 이용 • 인자가 있는 매크로의 치환 Perfect C
주의 사항 • 괄호의 이용 • 공백에 의한 오류 • 예제 4-4 : #define CUBE(x) ( (x) * (x) * (x) ) • 예제 4-5 : #define PHI 3.14 #define ROUND(r) (2 * PHI * (r) ) Perfect C
자료형의 재정의 • typedef • 키워드 typedef를 이용하여 이미 정해진 자료 유형을 다른 이름으로 재정의 • typedef unsinged long u_long; • 자료 재정의 필요성 • 터보 C++에서 자료 유형 int는 저장공간의 크기가 2바이트이나 비쥬얼 C++는 4바이트 • 개발도구가 변하면 자료 유형이 맞지 않아 오류가 발생함 • int 형이 2 바이트인 개발 환경에서는 typedef 문만 변경하면 나머지 프로그램 수정하지 않아도 됨으로 편리 (예) typedef long myint; Perfect C
예제 소스 • typedef.c Perfect C
표준입력 • 함수 scanf() • 간단한 정수의 입력 • &은 주소를 의미하는 연산자 Perfect C
함수 scanf()에서 임의의 갯수의 입력을 받을 수 있고, 이런 경우 적절히 변환 명세를 이용하여 입력 값을 지정 변환 명세 scanf(“%d %f”, &age, &weight); Perfect C
예제 소스 Perfect C
예제 소스 • mydata.c • 키보드로부터 키, 8진수, 16진수, 몸무게, 혈액형을 입력 받아 저장, 출력하는 프로그램 • 각각의 입력 값을 저장할 자료형을 고려하여 변수를 선언한 후 함수 scanf()를 이용하여 입력 값을 저장 • 문자 입력 • 155쪽 소스 24라인을 주의 • 함수 scanf()를 호출하는 인자가 “\n%c” • 만일 여러분이 무심코 24라인을 scanf(“%c”)로 코딩하였다면 프로그램 실행에서 원하는 결과가 나오지 않음 • 몸무게를 입력한 후 Enter 키를 누른 값이 \n으로 입력되고, 이 후 입력하는 문자가 변수 blood에 저장되게 하기 위함 Perfect C
출력 함수 • 함수 printf() • 모든 종류의 자료형을 출력하는 함수 • 제어문자열과 표현식을 이용하여 출력하는데, 제어문자열(control string)에는 출력하려는 표현식 값에 따라 변환명세 (conversion specification)를 차례로 기술 • 변환명세는 변환문자열이라고도 표현 • 제어문자열 내부의 변환명세는 표현식의 수와 값의 종류에 따라 서로 순서대로 일치 ( scanf 의 변환 명세와 동일한 명세 사용 ) printf (“ … %d … %f …“, 정수표현식, 실수표현식); Perfect C
정수 값의 필드 폭 • 출력하려는 정수 값의 필드 폭(width) 지정 • %d 사이에 폭을 나타내는 정수를 기술 Perfect C
실수의 필드 폭 • 부동소수형을 출력하는 경우 • 변환명세에서 필드 폭(width)을 지정하려면 %f 사이에 폭을 기술 Perfect C
출력 제어 문자의 이용 • 출력제어문자(escape sequences) • 탈출 기법을 이용한 문자를 함수 printf()에서 제어문자열이나 표현식에서 이용이 가능 Perfect C
예제 소스 • printescape.c Perfect C
예제 소스 • fieldwidth.c • 다음과 같은 출력이 나오도록 함수 printf()의 제어문자열과 변환명세를 고려하여 프로그램을 작성 Perfect C
문자 입출력 • 문자 하나 • 문자 하나를 입력하고 출력하기 위한 함수가 getchar()와 putchar() • 이 함수를 이용하려면 헤더 파일 stdio.h 파일을 첨가 • 함수 getchar()를 이용하여 문자를 하나 입력 받으려면 인자가 없는 getchar()를 이용 • 입력 받은 문자를 저장하려면 자료형 char나 정수형으로 선언된 변수를 이용하여 저장 • 문자의 출력은 함수 putchar()의 인자에 출력하려는 문자를 기술하여 출력 • char c; • c = getchar(); • putchar(c); Perfect C
이해점검 • C 언어에서 헤더파일을 첨가하는 지시자는 (#include )이다. • 사용자가 직접 작성한 헤더파일은 지시자 #include를 이용하는 경우, ( “” )를 이용하여 헤더파일을 기술한다. • 전처리기 지시자인 ( )은 소스에서 지정된 기호상수(symbolic constant)를 정의된 치환문자열로 대체한다. • 함수 printf()에서 출력 값의 정렬은 기본적으로 ( 오른쪽 ) 정렬이다. • 함수 printf()에서 출력 값의 정렬을 왼쪽으로 지정하려면 문자 ( - )를 % 다음에 기술하여 이용한다. • 표준 출력으로 함수 printf()를 이용하듯이, 표준 입력으로는 함수 ( scanf())를 이용한다. • 함수 scanf()에서 표준입력으로 값을 입력 받아 변수에 저장하려면 일반 변수 앞에는 반드시 주소를 의미하는 문자 ( & )가 앞에 와야 한다. • 함수 scanf()에서 double 자료형을 소수 형태로 입력 받으려면 변환명세를 (%lf )라 기술한다. • 문장 ( typedef )는 C 언어의 일반 문장으로 이미 사용되는 자료형을 새로운 자료형으로 정의할 수 있는 기능이다. • 문자 하나를 입력하는데 이용하는 함수는 ( getchar )이다. Perfect C
프로그래밍 실습 • 프로그램 목적 • 자료형 double인 원의 반지름을 입력 받아, 원의 둘레와 원의 면적을 구하는 프로그램을 작성 • 헤더 파일과 매크로를 작성 • 헤더파일 circle.h • 원주율 3.14를 PHI 정의 • 매크로 CIRCUM(x)은 인자 x가 반지름인 원에서 원의 둘레를 구하는 매크로를 정의 • 매크로 AREA(x)는 인자 x가 반지름인 원에서 원의 면적을 구하는 매크로를 정의 Perfect C
Thank You ! 노력 없이 이룰 수 있는 것 아무것도 없다.