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


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--;
    }
}

  • 복사-붙여넣기만 해도 실행 가능한 코드를 제공해 주세요.     Youngmin Koo   2016.8.9 01:22     
  • 추측컨데, `stdin`의 버퍼가 비어 있지 않아 해당 문제가 발생하는 것으로 보입니다. `while (getchar() != '\n');`를 `fgets` 함수의 호출 전에 넣어 보세요.    Youngmin Koo   2016.8.9 01:24     
  • 제 생각에도 stdin의 버퍼가 비어있지 않아 해당 문제가 발생하는 것 같습니다. 버퍼를 비워주던가 아니면 \n을 받도록 하는 작업을 하나 집어넣어야 할 것 같습니다.    유현호   2016.8.15 09:28     
조회수 301


로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close