mobile menu

The Arrow Newsletter

mobile menu

fopen fseek 예제

fseek()는 지정된 파일과 연결된 파일 포인터를 특정 위치로 이동하는 데 사용됩니다. 구문: fseek는 ANSI C 표준 라이브러리에 속하는 C 함수이며 파일 stdio.h에 포함됩니다. 그 목적은 지정된 스트림에 대한 파일 위치 표시기를 변경하는 것입니다. fseek는 많은 플랫폼에서 32 비트 값을 사용하기 때문에 최대 2 기가바이트 검색의 제한이 있습니다. fseeko64는 더 큰 오프셋에 사용됩니다. 추가(a 또는 a+) 모드에서 파일을 연 경우 파일 위치에 관계없이 파일에 쓰는 모든 데이터가 항상 추가되며 fseek()를 호출한 결과는 정의되지 않습니다. 파일 위치 표시기를 변경하는 것 외에도 fseek는 std::ungetc의 효과를 취소하고 해당되는 경우 파일 끝 상태를 지웁니까? fseek() 함수는 파일의 오프셋 및 시작 점값에 따라 파일 표시기 포인터를 파일 스트림과 연결하도록 설정하는 데 사용됩니다. 함수 fseek()의 프로토타입은 fseek() 를 구현할 때 파일 끝즉 포인터가 파일의 끝을 가리키는 0거리로 이동합니다. 따라서 출력은 81입니다. fseek 함수는 스트림과 연관된 파일 포인터를 원본 POSIX에서 바이트를 오프셋하는 새 위치로 이동하므로 기록되지 않은 데이터가 있는 경우 fseek가 먼저 fflush를 수행해야 합니다(그러나 시프트 상태가 복원되는지 여부는 구현 정의). 표준 C ++ 파일 스트림은 플러싱과 이동 해제를 모두 보장합니다: std::basic_filebuf::seekoff 여기, 우리는 구문으로 C 언어로 라이브러리 헤더 stdio.h의 fseek() 함수에 대해 배울 것입니다. Souvik Saha가 제출한 2019년 1월 24일에 fseek() 함수는 파일 포인터 위치를 지정된 위치로 이동하는 데 사용됩니다.

C 라이브러리 함수 int fseek(FILE *stream, long int offset, intwhence)는 스트림의 파일 위치를 지정된 오프셋으로 설정합니다. offset – 이것은 때에서 상쇄 바이트의 수입니다. 각 오류 번호에는 고유한 의미가 있습니다. 그 의미는 errno.h를 확인하여 드러나는 것입니다. 우리가 컴파일하고 다음 내용으로 file.txt파일을 만들 위의 프로그램을 실행하자. 처음 프로그램은 파일을 생성하고 이 tutorialspoint.com 기록하지만 나중에 우리는 처음부터 7 위치에서 쓰기 포인터를 재설정하고 다음과 같은 내용으로 파일을 과도하게 쓰는 puts() 문을 사용했습니다 – 전에 위치로 이동하려면 파일 의 끝, 당신은 오프셋에 음수 값을 전달하고 SEEK_END에 때를 설정해야합니다. 읽기 또는 쓰기 오류가 발생하면 스트림(std::ferror)에 대한 오류 표시가 설정되고 파일 위치는 영향을 받지 않습니다. 핸들에서 참조하는 파일의 파일 위치 표시기를 설정합니다.

파일의 시작 부분에서 바이트 단위로 측정된 새 위치는 whence에 의해 지정된 위치에 오프셋을 추가하여 가져옵니다. 이 프로그램 코드는 읽기 전용 모드에서 file.bin이라는 파일을 엽니다. 파일의 길이는 끝까지 찾은 다음 파일 포인터의 위치를 다시 읽음으로써 결정됩니다. 여기서 오프셋은 원점에서 바이트 수입니다. 스트림이 텍스트 모드에서 열려 있는 경우 오프셋에 대해 지원되는 유일한 값은 0(모든 원본에서 작동함)이며 이전 호출에서 std::ftell에 의해 반환된 값은 동일한 파일과 연결된 스트림에서 반환됩니다(SEEK_SET의 원본에서만 작동). POSIX는 파일의 기존 끝을 넘어 검색 할 수 있습니다. 이 검색 후에 출력이 수행되면 간격에서 읽은 내용이 0바이트를 반환합니다. 파일 시스템에서 지원되는 경우 스파스 파일이 만들어집니다. 스트림이 바이너리 모드에서 열려 있는 경우 원본이 SEEK_SET인 경우 파일의 시작 부분부터, 원본이 SEEK_CUR인 경우 현재 파일 위치에서, 원본이 SEEK_END인 경우 파일의 끝에서 정확하게 오프셋바이트가 됩니다.