어떤분이 fflush(stdin) 이 안좋다고 하길래 찾아봤더니
쓰지말라고 하시는분이 거의 대부분이길래
전 사용자 입출력땐 평화롭게 iostream만 쓰고
사용자입출력이아니라 초당 몇십만번 몇백만번씩 빡세게 파일입출력해야할때엔
io.h나 windows.h에있는 파일입출력스트림을 즐겨서 쓰는사람이라서
그러니까 fflush(stdin)을 접할 기회가 적어서
fflush(stdin)가 안좋은지는 처음알았슴다
갈쳐주실분
쓰지말라고 하시는분이 거의 대부분이길래
전 사용자 입출력땐 평화롭게 iostream만 쓰고
사용자입출력이아니라 초당 몇십만번 몇백만번씩 빡세게 파일입출력해야할때엔
io.h나 windows.h에있는 파일입출력스트림을 즐겨서 쓰는사람이라서
그러니까 fflush(stdin)을 접할 기회가 적어서
fflush(stdin)가 안좋은지는 처음알았슴다
갈쳐주실분
fflush stdin이 항상 작동하냐를 확인해 봐라.
MS개발환경이면... 그거 MS에서 fflush(stdin)을 어떻게 처리하는지 미리 잘 정해놨다. msdn에도 나온다. 그러니까 걱정말고 써라. 그런데 다른곳에서도 돌아가는 소스를 짜려면 쓰지말고 ㅋ 표준가지고 아는척 좋아하는 놈들이 심하게 확대해석하는 경우가 있는거지...MS개발환경에서 쓰는거라면!! 문제없다.
원래 용도 자체는 모니터에 출력할 때 출력 버퍼에 있는 내용을 일시에 모니터에 출력할 상황 즉, 출력버퍼를 일시에 비워줄 필요가 있을 때 사용하는 건데, 그것을 입력 버퍼에 사용하는 데다가, 입력버퍼가 하나의 단순한 구조가 아니라 단계적 구조에 있는 것에서 중간 과정에 있는버퍼만을 통 하고 비워주는게 scanf() 밑에 fflush() 라고 알고 있음. 발생하는 문제는 실제로 눈으로 확인한 바는 없는데, 파일 입력이나 다른쪽에서 간간히 문제가 발생했다는 글은 예전에 조금 본 적이 있엉.
안좋은게 아니라 표준이 아니다
stdin이 어떻게 되면 fflush(stdin)이 작동안하나요
요지는 그거지, 예측된 사용법이 아니기 때문에, 어떤 일이 일어날지 모름. 또 그것으로 인한 문제도 파악하기 매우 힘듦. 그래서 쓰지 말라는 거라고 알고 있음.
표준이 아니라고 드립치는 애들은 아마 WinMain()함수도 안쓰겠지 ㅋㅋ 쓰려나? ㅋㅋㅋ
그렇쿤요
작동의 보장이 불가
1 너는 평생 윈도에서만 짜라
뭔 헛소리야 또 ㅋㅋㅋ \"그런데 다른곳에서도 돌아가는 소스를 짜려면 쓰지말고 ㅋ\"라고 얘기해줬는데 ㅋㅋㅋㅋ 아무튼 이것들은 ㅋㅋㅋㅋㅋ
1//그럼. 그래서 내가 콘솔만 개발하지
콘솔 입력이 항상 키보드 만으로 이루어 질 것 같지?
까놓고 말해서 써도 문제는 없다. 윈도라면 말이지. 그런데 문제는 저런거 쓸 정도의 애들이면 윈도일지, *닉스 일지 제대로 알지도 못하는 학생들이 대부분이고, 그런애들은 저런거 윈도서 신나게써보다 *닉스 건너가서 안되는걸 경험하면 뭐가 문제인지 한참 먼때리는 경우가 꽤 자주있다. 실제로 본적도 있고. 최소한 답변해주거나 누군가에게 제공할 코드에선 fflush stdin은 그닥 좋은 코드가 아니다. 표준 자체에서도 대놓고 stdout/stderr 이외엔 우리도 알바아님 하는게 fflush다
그렇쿤요
그냥 맨처음부터 fflush가 등장안하게 코딩하는게 제일 ㅈ쿤요
fflush가 문제가 아니라 fflush(stdin)이 문제인 것이다..
키사노바는 또 뭔소리 하는거야 ㅋ 말난김에 링크나 걸어주고 가야지 ㅋㅋㅋㅋㅋ fflush( stdin ); // fflush on input stream is an extension to the C standard
http://msdn.microsoft.com/en-us/library/9yky46tz%28v=vs.71%29.aspx
1훃아는 I/O indirection은 한번도 안써봤나보네..
윈도에서도 충분히 문제가 될 수 있으니 VC 프로그래머들도 알고 써야 한다.
꼭 이렇게 고집피우는 애들이 있어요 fflush(stdin) 없으면 프로그램 못짜는것도 아니고