C 当使用getline的行为空时退出循环

C 当使用getline的行为空时退出循环,c,linux,unix,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",

当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;
}
#包括
#包括
int main(){
文件*stream=popen(“排序”,“w”);
char*line=NULL;
大小;
while(getline(&line,&size,stdin)){
fprintf(流,“%s\n”,行);
}
pclose(流);
返回0;
}

我试着检查行的长度并检查是否
getline!=-1
但它不起作用。

你的问题是你读的新行

如果你加上

if (*line == '\n') break;
对于您的循环,它可能会按预期工作。
测试getline()的-1返回值是一个好主意;您可能会遇到文件结尾而不是空行

问题是您读取的新行

如果你加上

if (*line == '\n') break;
对于您的循环,它可能会按预期工作。
测试getline()的-1返回值是一个好主意;您可能会遇到文件结尾而不是空行

getline在出错时返回-1,或者EOF
,而(-1){}
将永远运行。哦,我明白了,我如何检查一行是否为空?getline在出错时返回-1,或者EOF
,而(-1){
将永远运行。哦,我明白了,我如何检查一行是否为空?