*bufp = buf と書くのはなぜですか。どちらも配列なので、私の意見では次のようにする必要があります。
static char bufp = buf;
*bufp はどの位置から表示を開始するかをどのように「認識」しますか? ゼロに初期化されることはありません。に割り当て
buf
た後bufp
、戻り行では最後に入力された文字から始まると思います。unsigned char 修飾子は、入力の場合を省略するためにここで使用されていますか?ほとんどのシステム
-1
で意味がありますか?EOF
#include "syscalls.h"
/* getchar: simple buffered version */
int getchar(void)
{
static char buf[BUFSIZ];
static char *bufp = buf; /* [1] */
static int n = 0;
if (n == 0) { /* buffer is empty */
n = read(0, buf, sizeof buf);
bufp = buf; /* ? [1] here it is written like in my question so which is true ? */
}
return (--n >= 0) ? (unsigned char) *bufp++ : EOF; /* [2] & [3] */
}