저는 프로그램을 작성하고 버퍼를 처리해야했습니다. 그러나 일부 루프를 사용했을 때 버퍼가 각 반복 후에 플러시되지 않고 마지막 입력 값이 유지되지 않는다는 것을 깨달았습니다. 인터넷에서 검색 한 결과이 코드 줄을 발견했습니다. 그것은 효과가 있지만 나는 이것이 무엇을 의미하는지 모른다. fseek(stdin,0,SEEK_END);
다음 줄은 무엇을 의미합니까?
답변
읽기/쓰기 포인터를 파일/스트림의 끝으로 이동시켜 플러시해야합니다. 이 스트림을 식별하는 FILE 객체에 대한 포인터입니다 -
int fseek(FILE *stream, long int offset, int whence)
매개 변수
스트림를 참조하십시오.
오프셋 - 이것은 오프셋 된 바이트 수입니다.
whence - 이것은 오프셋이 추가 된 위치입니다. 그것은 다음 상수 중 하나에 의해 지정됩니다 -
- SEEK_SET : 파일의 시작
- SEEK_CUR : 파일 포인터의 현재 위치
- SEEK_END : 파일의 끝
당신은 또한 수 함수를 사용하십시오.
int fflush(FILE *stream)
stdin. 그것은 동일한 작업을 수행해야합니다.
이것을 읽었습니까? http://stackoverflow.com/a/18170435/6081445 - stdin에 사용해서는 안됩니다. –
'fflush (stdin);은 정의되지 않은 동작입니다. – Stargateur
전체 내용은 [fflush (stdin)'사용] (http://stackoverflow.com/questions/2979209/using-fflushstdin)을 참조하십시오. –
http://stackoverflow.com/q/4917801/2410359 – chux
fseek의 문서를 찾지 못했다면 확실히 검색 기술을 향상시켜야합니다. 이것은 간단한 Google 검색의 첫 번째 항목입니다. 구문을 이해하지 못한다면 C를 배우는 것이 도움이 될 것입니다. – Olaf