Tag: internals

关于getchar()循环如何在内部工作的困惑

我已经在下面使用getchar()包含了一个示例程序,供参考(并不是任何人可能需要它),如果您愿意,可以随意解决它的问题。 但我的问题是: 程序调用getchar()时究竟发生了什么 ? 以下是我的理解(请澄清或纠正我): 调用getchar时,它会检查STDIN缓冲区以查看是否有任何输入。 如果没有任何输入,getchar会睡觉。 唤醒后,getchar会检查是否有任何输入,如果没有,则让它自己再次进入睡眠状态。 重复步骤2和3,直到有输入。 一旦有输入(按照约定在结尾处包含’EOF’),getchar返回此输入的第一个字符并执行某些操作以指示下一次调用getchar应该从同一缓冲区返回第二个字母? 我不太确定那是什么。 当除了EOF之外没有其他字符时,getchar是否会刷新缓冲区? 我使用的术语可能不太正确。 #include int getLine(char buffer[], int maxChars); #define MAX_LINE_LENGTH 80 int main(void){ char line[MAX_LINE_LENGTH]; int errorCode; errorCode = getLine(line, sizeof(line)); if(errorCode == 1) printf(“Input exceeded maximum line length of %d characters.\n”, MAX_LINE_LENGTH); printf(“%s\n”, line); return 0; } int getLine(char buffer[], int maxChars){ int […]