ゼロ埋め立て ― 2008年10月24日 22時59分15秒
ごく普通の C プログラムで、Windows 特有のコードは無い。しかし、UNIX の様に /dev/zero などが無いので、プログラムを書いた。
しかし、Windows 用のプログラミング環境は無かったので、学校に行ってプログラムを生成した記憶がある。手元にこのプログラムがあっても邪魔だが、記念にこちらに残しておくことにした。
#include <stdlib.h>
#include <stdio.h>
#define SIZE 1024 * 1024
int main()
{
int i = 0;
char buf[SIZE];
FILE *fd;
memset(buf, 0, sizeof(buf));
if((fd = fopen("zero.txt", "w")) == NULL)
return -1;
for(i = sizeof(buf); i > 0; i >>= 1)
{
printf("%d ", i);
fflush(stdout);
while(fwrite(buf, i, 1, fd) > 0);
}
return 0;
}
1MB 毎にファイルに書き込むだけの単純な物だ。1MB の書き込みに失敗すると、段々とバッファの大きさを半分にして試している。最後に中途半端に余った部分を埋める為の工夫だろう。
まだまだ若かった。while(fwrite(buf, 1, sizeof(buf), fd) != sizeof(buf));
とすれば、わざわざ自分でバッファの大きさを小さくしていく必要も無かっただろうに。
最近のコメント