C공부중임.
입력 스트림 버퍼 비울때
윈도 VS에선
fflush(stdin);
하면 지워지는뎀
범용성때문에 딴걸써야된다네.. ??
책에서
while(getchar() != '\n');
이거쓰라는데
이거는 버퍼가 비워져있는 상태에서 쓰면
다시한번 엔터를 더쳐야됨;;;;
대처방안 아는횽????
리눅스에서는 어케함??
C공부중임.
입력 스트림 버퍼 비울때
윈도 VS에선
fflush(stdin);
하면 지워지는뎀
범용성때문에 딴걸써야된다네.. ??
책에서
while(getchar() != '\n');
이거쓰라는데
이거는 버퍼가 비워져있는 상태에서 쓰면
다시한번 엔터를 더쳐야됨;;;;
대처방안 아는횽????
리눅스에서는 어케함??
fseek( stdin, 0, SEEK_ST ); 이렇게하면 될듯?
리눅스에선 __fpurge(stdin); 잉여의 표현도 재밌긴 하다. 헌데 표준에 깔려죽고 싶지 않으면 적당히 하고 넘어가 : )
코세..... 오랜만에 보는 닉이당
둘다 모르는 표현이여서 그냥 배열의 길이를 미친듯이 늘렸습니다
오타 SEEK_SET임 걍 stdio.h 헤더만 걸어됨 비워지는지는 잘ㅋㅋ
표준 입력 스트림 버퍼를 비우는 이유가 대부분은 앞에 입력에서 엔터 값('\n')이 버퍼에 남아서 비우는 거 아닌가? 그거라면 그냥 scanf("%c") 같이 입력받는다고 했을 때 앞에 scanf(" %c"); 처럼 공백 문자를 넣어주면 알아서 이미 버퍼에 들어있는 whitespace는 무시해준다.
버퍼크기 바꾸고 입력모드 바꿨다가 프로그램 꺼질 때 원복