关于getchar和putchar
请教各位老大,getchar和putchar是不是有一种类似queue的储存机制啊,在用户按下enter前,将所有读取的char放到一个queue中,在用户输入enter后再输出
比如这个函数:
#include <stdio.h>
#include <ctype.h>
#define TRUE 1
#define FALSE 0
int main(int argc, char *argv[]) {
int ch;
int endSentence;
endSentence = TRUE;
while ((ch = getchar()) != EOF) {
if (isalpha(ch) && endSentence) {
ch = toupper(ch);
endSentence = FALSE;
} else if (ch == '.') {
endSentence = TRUE;
}
//printf("%c", (char)ch);
putchar(ch);
}
return 0;
}
虽然在while结构中是读取了一个char立马输出(putchar),但是运行结果却是用户按下enter后将所有的char一并输出(将每句的第一个char大写)
如果我在putchar前面加入一行printfprintf("%c", (char)ch); 那么输入的不仅是每个char都双倍,而且还会在所有char都输出后继续输出一空行,这个空行又是哪里来的呢?小弟百思不得其解,特来请教各位老大,还有我对getchar和putchar的储存queue猜想是不是正确的呢?