...

aiki99의 이미지

...

imyejin의 이미지

알단 위 코드에서 잘못된 점을 지적하자면 stdin 에는 fflush 를 사용해서는 안됩니다.

임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin

[예진아씨 피카사 웹앨범] 임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin

aiki99의 이미지

저도 fflush(stdin)에 대해서 생각해보았지만
다른 방법은 어떤 방법이 있나요?

IsExist의 이미지

stdin 은 버퍼링이 되기 때문에 적절치 않습니다.
정확히는 막는건 아니고 sleep동안 입력된 내용을 버립니다.

테미널 제어쪽 분야를 살펴보세요.

#include <stdio.h>
#include <unistd.h>
#include <sys/ioctl.h>
 
int
main(void)
{
    char ch;
 
    while (1) {
        read (0, &ch, 1);
        sleep(1);
 
        ioctl(0, TIOCFLUSH, NULL);
        if (ch == '\n') break;
        write (1, &ch, 1);
    }
 
    return 0;
}

---------
간디가 말한 우리를 파괴시키는 7가지 요소

첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스

이익추구를 위해서라면..

다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치

---------
간디가 말한 우리를 파괴시키는 7가지 요소

첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스

이익추구를 위해서라면..

다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치

aiki99의 이미지

IsExist 말씀대로 ioctl을 사용해서 해결했습니다.
다만 인수를 바꿨는데요.
ioctl(0, TCFLSH, NULL)을 이용하니깐 해결되었네요.
fflush 쓰실 분들 위에 함수를 이용해보세요.`