我试图在 unistd.h 中使用 read() 实现 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;
}