Unknown error calling stat() against a 4 GB file on Windows

32-bit, c, stat, windows-8

Solution

The `stat` function returns a `stat` struct that defines the file size with 32 bits, which means it can handle correctly file sizes only up to 4GB. You should use `stat64`.

See also the stat function family on MSDN

Problem

I have a 4 GB (exactly) file on an NTFS partition and a program that tries to get its size with `stat()` but it always fails with `Unknown error` (stat returns -1). Does this mean that NTFS doesn't support 4 GB files? Or I have to use a different (Win32?) API? Edit: ``` struct stat st; if (stat(path.c_str(), &st) == -1) { printf("stat: %s\n", strerror(errno)); } ``` outputs: ``` stat: Unknown error ```

Original source