当getline为line时,退出循环

时间:2017-11-22 16:01:01

标签: c linux unix

当stdin行为空时,如何退出while循环?

#include <unistd.h>
#include <stdio.h>

int main(){

    FILE* stream = popen("sort", "w");
    char *line = NULL;
    size_t size;

    while (getline(&line, &size, stdin)) {
        fprintf(stream,"%s\n", line);
    }

    pclose(stream);
    return 0;
}

我尝试检查行长并检查getline != -1是否有效。

1 个答案:

答案 0 :(得分:4)

您遇到的问题是您阅读的换行符。

如果你添加

if (*line == '\n') break;

到你的循环,它可能会按预期工作。 测试getline()获得-1返回值是个好主意;您可能会遇到文件结束而不是空行