누구든지 "복제본"이라는 불평을하기 전에 나는 매우 철저히 검사를 해왔지만 질문은 아주 간단 해 보이지만 깨끗한 대답은 아직없는 것 같습니다.C로 큰 파일 크기 가져 오기
나는이 파일이 4GB보다 크더라도 휴대용 C 코드을 찾고 있는데, 이는 파일 크기를 제공 할 수 있습니다.
파일이 < 2GB 인 한 일반적인 방법 (fseek, ftell)은 정상적으로 작동합니다. 어디서나 지원이 잘되어있어서 동등한 것을 찾으려고합니다.
업데이트 된 메서드 (fseeko, ftello)는 모든 컴파일러에서 지원되지 않습니다. 예를 들어, MinGW는 그것을 놓치고 (분명히 MSVC). 또한, 일부 의견은 새 반환 유형 (off_t)이 반드시 2GB보다 큰 크기를 지원하지 않는다고 생각합니다. 일부 외부 매개 변수에 따라 달라질 수 있습니다.
모호하지 않은 메서드 (fseeko64, ftello64)는 MSVC에서 지원되지 않습니다. MS는 해당하는 _fseeki64 & _ftelli64를 제공합니다. 이것은 이미 나 빠졌지 만 더 악화됩니다. 일부 Linux 구성은 런타임 중에 이러한 기능을 잘못 지원하는 것 같습니다. 예를 들어 GCC 4.4를 사용하는 PowerPC의 Debian Squeeze는 fseeko64를 사용하여 "filesize"메소드를 생성합니다. fseeko64는 항상 0을 반환합니다 (Ubuntu64에서는 정상적으로 작동합니다). MinGW는 2GB 이상의 임의의 쓰레기에 대답하는 것 같습니다.
글쎄, 나는 이식성에 관한 한 약간 우둔 해. #if #else를 여러 개 만들 필요가 있다면 먼저 OSV & 컴파일러의 구체적인 방법 (예 : MSVC의 GetFileSize())으로 이동하십시오.
"휴대용"에 대한 정의는 무엇입니까? 파일을 열 수없는 많은 시스템이 있습니다. 크기가 4GB가 넘는 파일은 열 수 없습니다. –