中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-15 00:27
47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,268 会员排行
DOS开发编程 & 发展交流 (开发室) » C读写大dbf文件
可打印版本  1,767 / 4
第1楼 liyangwyh 发表于 2010-01-21 11:11
初级用户 发帖 24 积分 72
C读写大dbf文件
我在dos下用C一行一行读取dbf中的记录,当数据文件大了就死机了。

fseek(fp,headlength, 0);/*将文件指针定位到第一记录开始处*/
for (recno=1; recno<=recnumber; recno++)
{
fgets(str, reclength+1, fp);
printf("%u, %s\n",recno, str);
}

请问各位有没有什么好的方法解决?
第2楼 mmxx0212 发表于 2010-01-21 12:00
新手上路 发帖 8 积分 18
可以找找有没有DBF文件操作的头文件
第3楼 mmxx0212 发表于 2010-01-21 12:03
新手上路 发帖 8 积分 18
你把完整代码发上来看看
第4楼 liyangwyh 发表于 2010-01-21 12:46
初级用户 发帖 24 积分 72
谢谢各位,问题找到了,是str的空间太小了数据内容超出了
第5楼 firstsail 发表于 2010-01-21 12:53
高级用户 发帖 295 积分 668 来自 广东深圳
这太好理解了,
您的recno是unsigned int 类型,而recnumber纪录号是unsinged long类型,所以recno不管怎样加加,只能在0~65535u中变化.

如果recno是unsigned long 类型,则printf("%u, %s\n",recno, str)应改为
printf("%lu, %s\n",recno, str);
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023