问题空间:
while ((len = _getline(line, MAXLEN)) > 0)
如何使i
内_getline(...)
增加,但在enter key
按下之前不打印结果?
代码示例:
#include <stdio.h>
#include <string.h>
#define MAXLEN 1000
int _getline(char s[], int max)
{
int c, i, l;
for (i = 0, l = 0; (c = getchar()) != EOF && c != '\n'; ++i) {
printf("%d\n", i);
if (i < max - 1) {
s[l++] = c;
}
}
if (c == '\n' && l < max - 1)
s[l++] = c;
s[l] = '\0';
return l;
}
int main()
{
int len;
char line[MAXLEN];
while ((len = _getline(line, MAXLEN)) > 0)
;
return 0;
}
答案 0 :(得分:1)
它是如何......(不会发生各种事情)但是在输入按键之前不打印结果?
来自stdin
的典型输入是行缓冲。 @John Coleman
getchar()
无法使用,等待等待,直到 Enter 或'\n'
被按下,或缓冲区填充(可能是4k字符),或发生EOF - 然后它返回第一个字符。对getchar()
的后续调用可能会使用缓冲的行输入快速返回。
缓冲行为取决于实现。它没有由C指定。