[완료]stdio buffer의 pointer에 대하여...
글쓴이: superdma / 작성시간: 목, 2009/07/16 - 1:42오후
#include <stdio.h> int main(void) { char ch; scanf("%c",&ch); return 0; }
위에 코드를 VS 6.0에서 실행시키고, console로 문자열을 입력받으면
stdio buffer에 입력받은 문자들이 쌓이는 걸로 알고있습니다.
이때 stdio buffer를 가리키는 pointer에 따로 접근하는 방법이 있나요?
예를 들어서 문자열을 입력받은 다음, 다시 scanf를 호출하면 stdio buffer의 pointer가 다음 문자를 가리키도록 이동하는 것은
확인하였습니다. 예를 든 코드는 다음과 같습니다.
#include <stdio.h> int main(void) { char ch; scanf("%c",&ch); printf("%c",ch); scanf("%c",&ch); printf("%c\n",&ch); return 0; }
Forums:
질문하신 목적을
질문하신 목적을 모르겠네요. 먼저 질문하신 목적을 말씀하세요.
Windows는 잘 모르겠지만, 일반적으로 버퍼에 쌓인 내용은 프로세스가 끝나면 다 없어지는데, 프로세스가 끝난 다음에도 읽을 수 있냐는 것인가요?
아니면, 버퍼에 쌓인 내용을 지우고 싶다는 것인가요?
--
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/
프로세스 까지 생각을 미처 못했네요.
프로세스 종료전에, stdio buffer에 있는 문자들에 대해서 자유롭게 접근이 가능한지 알고 싶습니다.
예를 들어 abcd가 들어온다면, stdio buffer의 pointer를 이용해서 마음대로 문자에 접근하는 방식 말입니다.
stdio buffer의 구현에 관한 내용도 찾고 싶은데, 마땅한 키워드가 없네요...
그리고
stdio buffer에 pointer라는 개념이 존재합니까? 그런건 어떻게 사용할 수 있는 건가요?...
한 문자씩 읽어 오는것을 보니 , 분명 pointer라는 개념이 존재 할꺼 같아 질문드립니다.
setbuf()
setbuf()를 써서 user-allocated buffer를 설정하면 버퍼 자체에 대한 접근은 가능하겠습니다만..
그 버퍼의 내용 자체는 구현 나름일테니, stream 상에서의 현재 위치에 해당하는 포인터 같은 것을 얻어내기는 어려울 듯 싶네요
제가 아는 바로도,
제가 아는 바로도, 버퍼를 설정하는 setbuf(), setvbuf()를 제외하고, 이 버퍼에 대한 정보를 얻는 것은 불가능합니다. 그리고 buelgsk8er님이 말씀하신 것처럼, 이 버퍼의 내용이 어떻게 쓰일지는 C library 마음입니다.
다만, 비표준 함수를 써서 이 버퍼의 내용을 강제로 비울 수는 있습니다.
--
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/
댓글 달기