今天用聚合算法跑30亿条数据库,结果计数器设为int类型,导致计数溢出,程序跑没影了……vc++2008中,int类型是-21亿到21亿……没办法换成unsigned int了。
为什么会出错呢,因为读取完了以后,我又调用了fseek函数,但是文件足足有80G,在32位系统中,fseek拼了命也只能访问2G大的文件,因为long类型不给力啊,所以了,偏移失败了,fseek(fp, 0, SEEK_END),自然找不到最后。
使用<io.h> 中的_access(FILENAME, 0); 可以判断一个文件是否存在,用remove(FILENAME),可以删除一个文件。
最后怎么解决的呢,为了判断一个文件是否为空,就采用了读取一个字符,看是否是EOF如果是,就证明文件是空的,反之则有内容。
白白跑了一晚上啊……一切重新开始。