2017-11-22 5 views
1

표준 입력 라인이 비어 있으면 while 루프를 어떻게 종료 할 수 있습니까? getline을 사용하여 행이 비어있을 때 출구 루프

#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

getline은 오류가 발생하면 -1을 리턴하고 EOF는 while (-1) {}을 영원히 실행합니다. – wildplasser

+0

오, 알겠습니다. 라인이 비어 있는지 어떻게 확인할 수 있습니까? –

답변

4

문제는 읽은 개행 문자입니다. 당신이 당신의 루프

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

를 추가하면 의도 한대로

, 그것은 아마 작동합니다. getline()을 -1 반환 값으로 테스트하는 것이 좋습니다.

+0

그건 속임수 였어. 감사 –

관련 문제