C언어 문자 입출력

Posted by Ho95

시작

방학동안 띵가띵가 놀고 백준을 풀어 보는데, 안그래도 낮았던 실력이 더 낮아져서 공부하다가

정리했습니다. C언어에서 문자 입출력에 대해…

char

Character의 약자 char. 저는 ‘차’라고 읽습니다.

2의보수 체계에서 1Byte(8bit)는 -2^7~2^7-1의 표현이 가능합니다.

unsigned char 같은 경우는 부호가 없기때문에 0~2^8까지 표현 가능.

왜 부호가 있을때는 -128~127까지이냐… 2의 보수 때문에 그럽니다.

1의 보수에서는 +0 -0이 있는데, 2의 보수에서는 0이 하나만 존재 함으로

-0 대신 음수 하나를 더 표현한 것입니다.

일반적으로 문자를 저장 한다고 배우지만 사실 숫자도 가능합니다.

단 범위는 위에 적었던 -128~127까지만…

그리고 아스키 코드도 7비트이죠. +패리티 1비트해서 총 8비트..

문자 입력 함수

1.int getc(FILE *stream)

: stream으로 부터 문자 하나를 읽고 그 문자에 해당하는 정수값을 반환하거나

파일의 끝이거나 에러 발생시 EOF(End Of File)을 반환합니다. stdio.h에 있고

반환값이 저장될 버퍼가 필요합니다.

2.int getch(void)

: 쭉 대기하다가 키보드에서 한 문자 입력시 바로 해당 정수값 반환후 종료.

반환후 바로 종료되기 때문에 화면에 출력 되지도 않고 버퍼도 필요 없습니다.

conio.h에 정의 되있다네요. ‘\r’을 인식시 종료 된다고 하네요. (반복문 이용시 주의)

3.int getche(void)

: 2번 getch()와 거의 같으나 차이점은 화면에 출력이 됩니다. 그외는 동일. conio.h에 정의

되어있고, 똑같이 ‘\r’을 인식시 종료.

4.int getchar()

: 이 함수는 매크로 함수라고 합니다. stdio.h에서 #define으로 getchar() 를 getc(stdin) 바꾼다네요.

사실상 stdin(표준입력)에서 입력된 한 문자를 가져오는 것.. 사실상 getc 함수이기 때문에 저장될 버퍼 필요

‘\n’을 인식시 종료됩니다. 즉 엔터 누르기전 입력된 모든 문자를 처리. 반복문이 아니라면 1byte만..

5.char gets(char *s)

: 매개 변수 *s에 문자열을 입력받는 함수입니다. stdio.h에 정의되어 있습니다.

엔터는 Null, ‘\0’으로 변환되어 문자열 끝에 자동으로 들어갑니다.

정상적으로 수행시 음수가 아닌 값을 반환하고 실패시 EOF가 반환됩니다.

6.int scanf(const char *format,[address])

: c언어 배웠다면 많이 쓰셨을 scanf입니다. 매개변수로 어떤 자료형으로 입력할 것인지, 그리고 어디에

저장할 것인지를 받습니다. 키보드에서 입력되는 값들을 Text Stream에 저장후 scanf에서 변수로 저장합니다.

엔터키(\n)도 text stream에 입력이 되었어 새로 입력시에는 text stream을 비워주는 작업을 한번 해주어야 합니다. 그때 이용하는 것이 getchar()입니다.

scanf(%[^\n]%*c”,변수) 처럼 선언시 공백을 포함한 모든 문자열의 입력이 가능합니다. 엔터키 전까지.

문자 출력 함수

1.int putc(int c, FILE *stream)

: 매개변수로 출력할 문자, 출력할 위치를 받습니다. 출력할 문자는 int형으로 캐스팅 되어 전달됩니다.

출력할 위치는.. stdout같은 객체…? 모니터등에 출력 getc에서 1byte 받아오면 putc로 1byte 출력합니다.

수행 성공시 입력한 문자값 반환 실패시 EOF 반환 stdio.h에 있습니다.

2.void putch(int c)

: int형으로 캐스팅된 c를 출력후 종료합니다. conio.h에 정의 되어 있으며 보통 getch(), getche()와

함께 씁니다. text stream 같은 버퍼 없어용~ 수행 성공시 출력에 쓰여진 문자가 반환되고 실패시 EOF!

conio.h에 있습니다.

3.int putchar(int c)

: getchar()와 짝으로 쓰입니다. 모니터(stdout)에 문자를 출력.

성공적으로 수행시 쓰여진 문자가 반환되고 실패시 EOF를 반환합니다.

stdio.h에 있습니다.

4.int puts(const char *str)

:gets()와 같이 쓰이는 puts!

str이 가르키는 문자열을 출력후 자동으로 줄 바꿈까지 해줍니다.

문자열 끝에 ‘\n’이 없어도 알아서 해준다네요. 출력은 ‘\0’를 만날때까지(=\0은 출력되지 않음)

성공적 수행시 음이 아닌 값이 반환되고 실패시 EOF를 반환합니다.

5.printf(const char *format, …)

: 데이터를 format(형식)에 맞추어 모니터(stdout)에 출력합니다.

형식은 %d, %c, %f, %lf 같은 것들을 뜻합니다. C언어 배우면서 많이 접해 보셨으리라 생각합니다.

형식 지정시 추가로 옵션을 줘서 출력 형식을 조정할 수 있습니다.

출력 성공시 출력된 전체 문자의 개수가 리턴되고 실패시 음수가 리턴됩니다.

stdio.h에 있어요!

틀린 부분 있을 수 있습니다.

알죠?

또한 C언어에는 문자열을 다룰 수 있는 라이브러리들이 많이 있습니다.