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;
}