문자, 문자열 단위 입출력 함수

Yumin Jung·2023년 10월 16일
0

문자 단위(putchar, fputc, getchar, fgetc)

문자 출력

함수 호출 실패 시 EOF 반환

putchar

int putchar(int c);

인자로 전달된 문자정보를 [stdout] - 표준 출력 스트림으로 전송

fputc

int fputc(int c, FILE * stream);

문자를 전송할 스트림을 지정할 수 있음.


문자 입력

파일의 끝에 도달 | 함수호출 실패 시 EOF 반환

getchar

int getchar(void);

[stdin] - 표준 입력 스트림으로부터 하나의 문자를 입력 받아서 반환

fgetc

int fgetc(FILE * stream);

문자를 입력 받을 스트림을 지정할 수 있음.



문자열 단위(puts, fputs, gets, fgets)

문자열 출력

성공 시 음수가 아닌 값 반환 / 실패 시 EOF 반환
scanf와 다르게 공백을 포함하는 문자열도 입력 받을 수 있다.

puts는 자동으로 개행이 이뤄지지만, fputs는 자동으로 개행이 이뤄지지 않는다

puts

int puts(const char * s);

인자로 전달된 문자열 주소값을 [stdout] - 표준 출력 스트림으로 전송

fputs

int fputs(const char * s, FILE * stream);

두 번째 인자를 통해 출력의 대상을 결정 가능.


문자열 입력

파일의 끝에 도달 | 함수호출 실패 시 NULL 포인터 반환

gets

char * gets(char * s);

문장구성은 간단하나, 미리 마련해 놓은 배열을 넘어서는 길이의 문자열이 입력될 시, 할당 받지 않은 메모리 공간을 침범하여 실행 중 오류가 발생한다는 단점.
결론 : 가급적 fgets 사용.

fgets

char * fgets(char * s, int n, FILE * stream);

문자열 입력 받으면 문자열 끝에 자동으로 널 문자가 추가. 따라서 하나 작은 문자열이 저장됨. 두번째 인자로 길이 제한.

\n을 제외시키거나 버리지 않고 문자열의 일부로 받아드린다. -> 엔터키의 입력도 문자열의 일부로 받아들인다.

profile
문과를 정말로 존중해

0개의 댓글