`fgets`가 입력을 받지 않고 바로 실행됩니다.

조회수 3245회

while 문에서 scanf 대신 fgets를 써서 표준 입력을 받았을 때 왜 바로 입력을 기다리지 않고 한 번 수행되는지 궁금합니다.

while (times != 0) {
    char line[51];
    int i = 0;
    fgets(line, 51, stdin); // 이 부분에서요~!
    while (line[i] != '\0') {
        if (line[i] == '(') push(line[i]);
        else if (line[i] == ')')
            if (pop() == -1)
                break;
        i++;
    }
    if (empty() && line[i] == '\0') {
        printf("YES\n");
        count = -1;
        times--;
    } else {
        printf("NO\n");
        count = -1;
        times--;
    }
}
  • (•́ ✖ •̀)
    알 수 없는 사용자
  • 복사-붙여넣기만 해도 실행 가능한 코드를 제공해 주세요. 알 수 없는 사용자 2016.8.9 01:22
  • 추측컨데, `stdin`의 버퍼가 비어 있지 않아 해당 문제가 발생하는 것으로 보입니다. `while (getchar() != '\n');`를 `fgets` 함수의 호출 전에 넣어 보세요. 알 수 없는 사용자 2016.8.9 01:24
  • 제 생각에도 stdin의 버퍼가 비어있지 않아 해당 문제가 발생하는 것 같습니다. 버퍼를 비워주던가 아니면 \n을 받도록 하는 작업을 하나 집어넣어야 할 것 같습니다. 알 수 없는 사용자 2016.8.15 09:28

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)