fseek 一个新创建的文件

fseek a newly created file

我对 C 中的 fseek() 用法有疑问。我知道它可以设置由 fopen() 创建的文件描述符的偏移位置。但是它是否也可以设置新建文件的偏移位置呢?更具体地说,我可以:

  FILE * pFile;
  pFile = fopen ( "myfile.txt" , "wb" );  //myfile.txt doesn't exit before
  fseek ( pFile , 1024*1024*1024 , SEEK_SET);
  fclose(pFile);

它会创建一个大小为 1 GB 且没有内容的文件吗?或者我至少应该写点东西来创建这个 1 GB 的文件?

http://en.cppreference.com/w/c/io/fseek

POSIX allows seeking beyond the existing end of file. If an output is performed after this seek, any read from the gap will return zero bytes. Where supported by the filesystem, this creates a sparse file.

你可以这样做,它会创建间隙文件。从间隙 return 零字节中读取的任何内容。系统为文件系统做优化。