unistd.h에서 read()를 사용하여 getchar() 함수를 구현하려고했습니다.읽기와 함께 getchar 구현
시스템 호출이 비싸기 때문에 가능한 적은 read() 함수를 실행하고 싶습니다.
"getchar"을 사용하면 정상적으로 작동합니다. 그러나 "mygetchar"은이 경우 작동하지 않습니다.
누구든지 내가 잘못 한 것을 지적 할 수 있습니까?
#include <stdio.h>
#include <unistd.h>
#define BUF_SIZE 1024
int startIndex;
int endIndex;
int mygetchar(void){
char buffer[BUF_SIZE];
startIndex=0;
endIndex=0;
if(startIndex == endIndex){
int r;
r = read(0,buffer,BUF_SIZE);
startIndex=0;
endIndex=r;
}
return buffer[startIndex++];
}
int main(){
char c;
int i=0;
do{
c = mygetchar();
putchar(c);
i++;
}
while(c != EOF);
return 0;
}
'버퍼'도 전역 변수로 만들어야합니다. 그렇지 않으면 읽기 호출 당 최대 1023자를 읽고 쓰는 중입니다. 'mygetchar'에 대한 후속 호출은 쓰레기를 반환합니다. – Anthony