표준 입출력

학습목표    1

학습주제    1

예습내용    1

실습방법    1

        1

중요함수    1

학습목표

§         키보드로 입력하고 이를 모니터로 문자를 출력 한다.

§         실습보드의 입력(스위치) 출력(Led) 동작한다

학습주제

§           ANSI C 컴파일러의 라이브러리 <stdio.h> 있는 입출력 함수를 알아 본다.

§           보드의 8비트 출력과 함수

예습내용

다음은 <stdio.h> 있는 입출력 함수이다. 함수에 대해 공부하시오.

입출력 함수

 

getchar()

개의 문자를 입력

putchar()

개의 문자를 출력

gets()

한줄의 문장을 입력

puts()

한줄의 문장을 출력

scanf()

양식에 따라 입력

printf()

양식에 따라 출력

 

문자출력에 관련된 형식을 공부해 봅시다.

1. 문자 입출력

다음은 한문자를 키보드로 받아서 화면으로 출력하는 프로그램이다.

예제1

#include "stdafx.h"

#include "stdio.h"               // getchar(), putchar() 포함하는 헤더파일

int main(int argc, char* argv[])

{

              char c;               // c 문자형 변수로 선언

              c = getchar();          // 키보드에서 한문자를 받아 c 저장

              putchar(c);            // 문자 c 저장 값을 출력한다.

              return 0;

}

2. 양식 출력

출력은 “” 사이에 문자를 출력하며 다음 3가지 형태이다.

 

문자

 

일반 문자

없슴

문자를 그대로 출력

이스케이프 문자

\

이스케이프를 처리

변환 문자

%

정수, 실수 변수 등의 형태를 출력

1)       이스케이프 문자

다음과 같이 커서를 이동하여 출력한다.

문자

명칭

 

\n

New Line

새로운 라인

\t

Horizontal Tab

수평으로 다음 이동

\v

Vertical Tab

수직으로 다음 이동

\b

Back Space

반대 방향으로 이동

\f

Form Feed

1페이지 이동

\r

Carrage Return

행의 시작 위치로 이동

\a

Bell

소리를

\\

BackSlash

\ 프린트

\’

Single Quote

프린트

\”

Double Quote

프린트

\0

Null Character

ASCII 문자 0 상수로 처리

\숫자

 

숫자에 해당하는 ASCII 문자 출력

2)       변환 문자열

% [플래그] [필드폭] [.정도] 변환문자

필드폭 : 출력 숫자의 자리수

정도 : 소수점이하 지정 자리 수까지 출력

플래그 : 자리수 내에서 데이터의 위치와 모양

 

변환문자

 

%d

10진수(decimal) 정수로 출력

%o

8진수(octal) 정수로 출력

%x,X

16진수(hexadecimal) 정수로 출력

x 소문자로 X 대문자로 출력

%c

문자로 변환하여 출력

%s

문자열로 변환하여 출력

%f

부동 소수점으로 출력

%e,E

지수형으로 출력

%%

% 출력

 

 

실습방법

   

1. 문자 입출력

[Project name] “Ex1”으로 하고 [OK]버튼을 누른다.

아래와 같이 선택하면 main 함수가 만들어 것을 있다.

예제1 프로그램을 작성하고 실행 보자

2. printf() 사용

예제2

#include "stdafx.h"

#include "stdio.h"

int main(int argc, char* argv[])

{

              int number=10;

        printf(“number(10진수) %d\n”,number);

        printf(“number(8진수) %o\n”,number);

printf(“number(16진수) %x\n”,number);

}

number(10진수) 10

number(8진수) 12

number(16진수) a

 

처음

AVR 출력

AVR 출력은 디지털 포트의 출력을 이해해야 한다. 실습 장비는 앞의 도면에서와 같이 AVR C포트에 연결되어 있다.

보드의 LED 0V 연결될 불이 들어오게 되어 있다.

 

상위비트

하위비트

 출력

보수출력

보드핀이름

PC7

PC6

PC5

PC4

PC3

PC2

PC1

PC0

 

 

보드핀번호

24

23

22

21

20

19

18

17

 

 

0

5V

5V

5V

5V

5V

5V

5V

0V

0xfe

~0x00

1

5V

5V

5V

5V

5V

5V

0V

5V

0xfd

~0x01

2

5V

5V

5V

5V

5V

0V

5V

5V

0xfb

~0x02

3

5V

5V

5V

5V

0V

5V

5V

5V

0xf7

~0x04

4

5V

5V

5V

0V

5V

5V

5V

5V

0xef

~0x10

5

5V

5V

0V

5V

5V

5V

5V

5V

0xdf

~0x20

6

5V

0V

5V

5V

5V

5V

5V

5V

0xbf

~0x40

7

0V

5V

5V

5V

5V

5V

5V

5V

0x7f

~0x80

8개의 LED 순차적으로 불이 들어오게 하는 프로그램을 만든다.

AVR예제1

8개의 LED 순차적 점등

while (1)

      {

      // Place your code here   

        PORTC=~0x01;     //1 보수를 출력                

        delay_ms(100);    // 0.1초간 시간 지연

        PORTC=~0x02; 

        delay_ms(100);

        PORTC=~0x04; 

        delay_ms(100); 

        PORTC=~0x08; 

        delay_ms(100);

        PORTC=~0x10; 

        delay_ms(100);

        PORTC=~0x20; 

        delay_ms(100);

        PORTC=~0x40; 

        delay_ms(100);

        PORTC=~0x80; 

        delay_ms(100);

         

      };

전체프로그램보기

   

1. 문자 입출력

과제1

#include "stdafx.h"

#include "stdio.h"

int main(int argc, char* argv[])

{

              char buffer[256];

              gets(buffer);

              puts(buffer);

              return 0;

}

홍길동    (입력값을 치고 리턴을 친다.)

홍길동

2. 다음 학번과 이름을 출력하시오.

과제2

#include "stdafx.h"

#include "stdio.h"

int main(int argc, char* argv[])

{

              char name[50]=”개똥이”;

        int no=456;

              // 이곳에 프로그램 한다.

return 0;

}

3. printf() 사용

교재 EX2-7.cpp 출력해 본다.

4. scanf() 사용

  교재 EX2-8.cpp 출력해 본다.

 

중요함수

getc, getwc, getchar, getwchar

Read a character from a stream (getc, getwc), or get a character from stdin (getchar, getwchar).

int getc( FILE *stream );

wint_t getwc( FILE *stream );

int getchar( void );

wint_t getwchar( void );

Routine

Required Header

Compatibility

getc

<stdio.h>

ANSI, Win 95, Win NT

getwc

<stdio.h> or <wchar.h>

ANSI, Win 95, Win NT

getchar

<stdio.h>

ANSI, Win 95, Win NT

getwchar

<stdio.h> or <wchar.h>

ANSI, Win 95, Win NT

 

For additional compatibility information, see Compatibility in the Introduction.

Libraries

LIBC.LIB

Single thread static library, retail version

LIBCMT.LIB

Multithread static library, retail version

MSVCRT.LIB

Import library for MSVCRT.DLL, retail version

 

Return Value

Each of these functions returns the character read. To indicate an read error or end-of-file condition, getc and getchar return EOF, and getwc and getwchar return WEOF. For getc and getchar, use ferror or feof to check for an error or for end of file.

Parameter

stream

Input stream

Remarks

Each of these routines reads a single character from a file at the current position and increments the associated file pointer (if defined) to point to the next character. In the case of getc and getwc, the file is associated with stream (see Choosing Between Functions and Macros). Routine-specific remarks follow.

Routine

Remarks

getc

Same as fgetc, but implemented as a function and as a macro.

getwc

Wide-character version of getc. Reads a multibyte character or a wide character according to whether stream is opened in text mode or binary mode.

getchar

Same as _fgetchar, but implemented as a function and as a macro.

getwchar

Wide-character version of getchar. Reads a multibyte character or a wide character according to whether stream is opened in text mode or binary mode.

 

Generic-Text Routine Mappings

TCHAR.H Routine

_UNICODE & _MBCS Not Defined

_MBCS Defined

_UNICODE Defined

_gettc

getc

getc

getwc

_gettchar

getchar

getchar

getwchar

 

Example