c언어 getchar 함수를 사용할때 문자열을 입력해도 괜찮다고 하는데
글쓴이: myq100 / 작성시간: 토, 2015/09/19 - 3:07오후
책 내용에 따르면
getchar 함수가 호출된다고 해서 하나의 문자만 입력하려고 노력하지 않아도 된다.
문장이 입력되면 문장을 구성하는 문자의 수만큼 getchar 함수가 호출되면서 모든 문자를 읽어들이니 말이다.
라고 하는데 이해가 안돼서요
int ch;
ch = getchar();
이렇게 만들면 변수는 하난데
문자 수만큼 getchar 함수가 호출되려면 변수의 수가 부족한것 아닌가요?
Forums:


우선 입출력과 운영체제쪽부터 설명해야 말이
우선 입출력과 운영체제쪽부터 설명해야 말이 되는데
[입력]-[커널]-[프로세스의 스트림]-[유저 프로세스]
대략 이런 식으로 유저 프로세스에게 정보가 오고 갑니다.
그런데 프로세스 스트림중에 표준 입력 스트림이라는게 존재하는데(stdin)
getchar는 이 스트림으로부터 데이터를 '읽어'오는 함수입니다.
즉, 문자열 여러개를 입력하면 커널이 알아서 해당 스트림에 데이터를 차곡 차곡 쌓아 놓는 것이고,
getchar()는 단지 표준 스트림에서 '빼오기만'하는 행동만 하는 겁니다.
getchar()가 굳이 키보드로 입력받을 필요 없습니다.
어떠한 입력장치라도 표준 스트림에 연결되면,
해당 입력장치로부터 getchar()를 이용해 데이터를 수신할 수 있습니다.
========================================================
자세히 적으려다가 너무 길어졌네요. 요약하면
"알맞은 입력이 들어오면 운영체제(커널)가 알아서 스트림에 데이터를 넣어준다."
"getchar()은 해당 스트림중에서 표준스트림으로부터 데이터를 1바이트 만큼 빼오는 함수이다."
아...질문을 잘 못 이해한것 같네요/ char
아...질문을 잘 못 이해한것 같네요/
char c; while(c=getchar()) putchar(c);이런식으로 구현되있나 보죠?
그냥 여러번 읽고 여러번 쓴다는 것 같네요. 쓴거 아까워서 안지우고 따로 답니다;;
stdin 버퍼 비울때 자주 쓰는 방식인데, 읽어도
stdin 버퍼 비울때 자주 쓰는 방식인데, 읽어도 됩니다.
while((c = getchar()) != '\n') 출력;근데 책이 설명을 좀 이상하게 해놨네요.