当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
是否有效。
答案 0 :(得分:4)
您遇到的问题是您阅读的换行符。
如果你添加
if (*line == '\n') break;
到你的循环,它可能会按预期工作。 测试getline()获得-1返回值是个好主意;您可能会遇到文件结束而不是空行