一个关于c语言写1G文件的问题,有程序

#include<iostream>#include<time.h>#include<string.h>#include<iomanip>usingnamespacest... #include <iostream>
#include <time.h>
#include <string.h>
#include<iomanip>
using namespace std;
#define RECORD_NUM 10000000
#define READ_NUM 1000
typedef struct record
{
int num;
char info[96];
}record,*precord;
void ReadFile(FILE *fp,char *addr,char *mod){
record rec[READ_NUM];
if((fp=fopen(addr,mod))==NULL)
{
printf("Source file can\'t be opened!\n");
exit(0);
}
for(int i=0;i<READ_NUM;i++){
fread(rec+i,sizeof(*rec),1,fp);
}
for(int j=0;j<READ_NUM;j++)
cout<<rec[j].num<<"\t"<<rec[j].info<<"\t";
cout<<endl;
fclose(fp);
}
void produce_file(FILE *fp,char *addr,char *mod){
if((fp=fopen(addr,mod))==NULL)
{
printf("Source file can\'t be opened!\n");
exit(0);
}
record rec;
memset(rec.info,0,96);
strcpy(rec.info,"xev");
srand((unsigned)time(NULL));
for(int i=0;i<RECORD_NUM;i++){
rec.num=(int)rand();
fwrite(&rec,sizeof(rec),1,fp);
}
fclose(fp);
}
字数有限,main函数就不粘了,运行结果是:生成了一个950多兆的文件,每条记录是100字节,问题在与读记录时读到一定条数后面就显示为 烫或者负的一串数字,想请问大神怎么回事,怎么改?谢谢
展开
 我来答
cjj796
2013-10-28 · TA获得超过8709个赞
知道大有可为答主
回答量:1.3万
采纳率:68%
帮助的人:3454万
展开全部
你好!!
是不是和你 RECORD_NUM 10000000 数值太大了啊
更多追问追答
追问

跟RECORD_NUM数值大小没关系吧,我把rand()函数替换成整数100是没问题的


 ...for(int i=0;i<RECORD_NUM;i++){
  //rec.num=(int)rand();
  rec.num=100;
  fwrite(&rec,sizeof(rec),1,fp);...
}

追答
rec.num=(int)rand(); 这里是不是也要限定一定最大值呢
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
二弼萌8
2013-10-27 · TA获得超过666个赞
知道小有建树答主
回答量:1159
采纳率:0%
帮助的人:335万
展开全部
显示烫烫一般就是在windows系统上面用的,没有初始化为0导致,烫也就是0xcc、0xcc
在使用数组的时候初始化为0就可以了,用memset
更多追问追答
追问
代码里写了memset,还是读出乱七八糟的数据
追答

我试了一下,没乱啊。lz是什么环境?其他部分能否贴上来?

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友10c6f4b
2013-10-27 · TA获得超过613个赞
知道小有建树答主
回答量:1083
采纳率:100%
帮助的人:199万
展开全部
肯定是你写文件时或读文件有问题.
追问
刚开始读出的数据是好的,几十条之后就乱了,代码没错啊…我把随机函数替换成一个固定整数就没错,为什么⊙⊙?
追答
你为何不以二进制方式打开读写?
produce_file(fp,"D:\\a.txt","wb");
ReadFile(fp,"D:\\a.txt","rb");
写完了可以用二进制查看器查看一下对不.ultraedit.
正确了再读出.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式