一个关于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字节,问题在与读记录时读到一定条数后面就显示为 烫或者负的一串数字,想请问大神怎么回事,怎么改?谢谢 展开
#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字节,问题在与读记录时读到一定条数后面就显示为 烫或者负的一串数字,想请问大神怎么回事,怎么改?谢谢 展开
3个回答
展开全部
肯定是你写文件时或读文件有问题.
追问
刚开始读出的数据是好的,几十条之后就乱了,代码没错啊…我把随机函数替换成一个固定整数就没错,为什么⊙⊙?
追答
你为何不以二进制方式打开读写?
produce_file(fp,"D:\\a.txt","wb");
ReadFile(fp,"D:\\a.txt","rb");
写完了可以用二进制查看器查看一下对不.ultraedit.
正确了再读出.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询