man page에 있는 내용입니다
이름
fgetc, fgets, getc, getchar, gets, ungetc - 문자와 문자열을 입력 받는
함수
사용법
#include <stdio.h>
int fgetc(FILE *stream);
char *fgets(char *s, int size, FILE *stream);
int getc(FILE *stream);
int getchar(void);
char *gets(char *s);
int ungetc(int c, FILE *stream);
fgets() 는최대 size - 1 개 이하의 문자를 stream으로부터읽어서 s가가리키
는 버퍼에 저장한다. 그러나 EOF나개행 문자를 입력 받았을 경우에는 읽기를
멈춘다. 입력 받은 개행 문자는 그대로 버퍼에 저장하고 ’\0’을버퍼의 마지
막 문자 다음에 추가한다.
fgets를 사용하시는게
전 키보드 입력 받을때 fgets를 씁니다.
man page에 있는 내용입니다
이름
fgetc, fgets, getc, getchar, gets, ungetc - 문자와 문자열을 입력 받는
함수
사용법
fgets() 는최대 size - 1 개 이하의 문자를 stream으로부터읽어서 s가가리키
는 버퍼에 저장한다. 그러나 EOF나개행 문자를 입력 받았을 경우에는 읽기를
멈춘다. 입력 받은 개행 문자는 그대로 버퍼에 저장하고 ’\0’을버퍼의 마지
막 문자 다음에 추가한다.
fgets(buf, MAX_LINE, stdin)
이런식으로요
매우 주관적인
매우 주관적인 의견입니다만:
가. 사람에게서 직접 입력받는 프로그램을 만드는 경우:
1. scanf()를 안쓰는 것이 올바른 사용 방법입니다.
2. 입력받는 내용의 줄 길이가 확실하게 제한되어 있다면, fgets()를 쓰면 됩니다.
3. 입력받는 내용의 줄 길이에 제한이 없다면, GNU 확장 기능인 getline()을 쓰면 됩니다. getline()을 쓰기 싫다면, malloc/getchar 등을 써서 직접 만들 수 있습니다.
4. 좀 더 편리한 interface를 만들고 싶다면, GNU readline/history library를 쓰면 더욱 좋습니다.
5. gets()는 절대로 쓰면 안됩니다.
나. 완벽하게 고정된(human-readable이 아닌) 입력을 받아 처리하는 경우:
a. 이 경우 대개의 경우 stdin을 쓰지 않고 파일 이름을 전달하는 방식으로 프로그램을 작성하게 됩니다. stdin을 쓰는 경우라면 scanf()를 써도 되지만, 보통 fscanf()를 써서 처리합니다.
b. 위 2,3의 내용 그대로 적용됩니다.
--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
FILE 기반의 함수들은
FILE 기반의 함수들은 기본적으로 LF(엔터키. dos에서는 CR LF)을 입력 끝으로 인식합니다.
사용자가 LF을 입력하기 전에는 FILE 함수가 컨트롤을 가지고 있죠.
FILE 기반의 함수는 일관된 입력이 가정된 경우에 편리합니다.
키보드나 파일을 일관되게 입력으로 가정하니깐요.
반면에 interactive input은 키보드 입력만을 가정하는 것이라 컨트롤 문자의
입력이나 escape 문자의 입력을 고려해야 합니다.
---------
간디가 말한 우리를 파괴시키는 7가지 요소
첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스
이익추구를 위해서라면..
다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치
---------
간디가 말한 우리를 파괴시키는 7가지 요소
첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스
이익추구를 위해서라면..
다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치
댓글 달기