使用getline在行为空时退出循环

胜利者

当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和它不起作用。

罗纳德

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

如果添加

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章