我需要制作许多大小不一的大型文本文件,精确到兆字节的倍数(换句话说,正好是 10 MB、50 MB、100 MB,我不确定我需要多大去)。
我不希望文件全为 1 或全为 0,因此我有一个大约 10 MB 的文本文件,我想根据需要多次复制该文本以制作我的文件。
我看到过使用 sendfile 代替 read() 和 write() 的建议。我写了一些东西,可以从我的 10MB 文件生成一个 1MB 的文件,但我想知道一旦我点击 EOF 来生成一个超过 10MB 的文件,我该如何循环。
这最终将在 Linux 计算机上使用,但我现在正在用 C 语言的 Cygwin (Windows) 编写它。
请您参考如下方法:
如果您已经从头到尾浏览文件并进行复制,那么您所缺少的只是一种返回开头的方法。
当您点击 EOF 时,使用 rewind() :
rewind(file);
file 是您的文件描述符。 rewind() 是 fseek() 的特例:
fseek(file, 0, SEEK_SET); // Same effect
