自定义getline()实现 - 用于while循环

时间:2016-10-17 22:56:50

标签: c arrays c-strings getchar

问题空间:

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

1 个答案:

答案 0 :(得分:1)

  

它是如何......(不会发生各种事情)但是在输入按键之前不打印结果?

来自stdin的典型输入是行缓冲@John Coleman

getchar()无法使用等待等待,直到 Enter '\n'被按下,或缓冲区填充(可能是4k字符),或发生EOF - 然后它返回第一个字符。对getchar()的后续调用可能会使用缓冲的行输入快速返回。

缓冲行为取决于实现。它没有由C指定。