zsh_7769
驱动小牛
驱动小牛
  • 注册日期2004-04-15
  • 最后登录2005-12-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1510回复:9

高分请教读取文件数据的问题!急!!!!

楼主#
更多 发布于:2004-09-03 11:31
因为板子的要求,我每次只能从文件中读取16K的数据写到板子上去,如果我要从文件中读取的数据远大于16K,我只能多次调用从文件中读取数据的函数(PCI9054_WriteToRam1 ()),当我调用一次读取数据的函数读取一帧数据后,第二次调用时怎样使指针指到文件上第二帧数据的起始位?
下面是我的代码,PCI9054_ReadWriteBlock()是写数据到板子上的函数。
void PCI9054_WriteToRam1 (PCI9054_HANDLE hPCI9054, PCI9054_ADDR addrSpace, DWORD dwOffset, WORD data)
{  
    FILE *fp;
    short a[16383];
    UINT i;
    
if((fp=fopen("F:\data\adsin.dat","r"))==NULL)
      {
        printf("cannot open filen");
        exit(0);
      }
for(i=0;i<=16382;i++)
{
//while(!feof(fp))
     fscanf(fp, "%d", &a);
}
    fclose(fp);
    dwOffset=2;
    for(i=0; i<=16382;i++)
{              
data=a;
PCI9054_ReadWriteBlock(hPCI9054, addrSpace, dwOffset, FALSE, &data, sizeof(WORD), PCI9054_MODE_WORD);      
dwOffset+=2;
}      
}
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2004-09-03 13:52
use fread instead
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
zsh_7769
驱动小牛
驱动小牛
  • 注册日期2004-04-15
  • 最后登录2005-12-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-09-03 15:25
真的可以吗?帮我把那段代码改改吧,一定给分!多谢多谢!
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
地板#
发布于:2004-09-03 17:24
void PCI9054_WriteToRam1 (PCI9054_HANDLE hPCI9054, PCI9054_ADDR addrSpace, DWORD dwOffset, WORD data)
{
FILE *fp;
short a[16383];
UINT i;

if((fp=fopen("F:dataadsin.dat","r"))==NULL)
{
printf("cannot open filen");
exit(0);
}
fread(a, sizeof(short), 16383, fp);
fclose(fp);
dwOffset=2;
for(i=0; i<=16382;i++)
{
data=a;
PCI9054_ReadWriteBlock(hPCI9054, addrSpace, dwOffset, FALSE, &data, sizeof(WORD), PCI9054_MODE_WORD);
dwOffset+=2;
}
}
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
zsh_7769
驱动小牛
驱动小牛
  • 注册日期2004-04-15
  • 最后登录2005-12-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-09-04 14:04
wowocock,你好!按照你改的那样好像还是在读第一帧的数据,再帮我想想办法吧,先谢谢啦!
zhiyuan19840428
驱动小牛
驱动小牛
  • 注册日期2004-05-11
  • 最后登录2005-06-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-09-05 08:51
void PCI9054_WriteToRam1 (PCI9054_HANDLE hPCI9054, PCI9054_ADDR addrSpace, DWORD dwOffset, WORD data)
{
FILE *fp;
short a[16383];
UINT i;

if((fp=fopen("F:dataadsin.dat","r"))==NULL)
{
printf("cannot open filen");
exit(0);
}
for(int i = 0; i < MAX_READS; i ++)   //循环读帧
{
fread(a, sizeof(WORD), 16383, fp);
fseek( a, i * 16383, SEEK_SET);  //移动文件指针指向下一帧的开始位置
fclose(fp);

dwOffset=2;
for(i=0; i<=16382;i++)
{
data=a;
PCI9054_ReadWriteBlock(hPCI9054, addrSpace, dwOffset, FALSE, &data, sizeof(WORD), PCI9054_MODE_WORD);
dwOffset+=2;
}
}
}

fread是不可以移动指针,上面有位兄弟好象说错了,以下是MSDN上的说法:size_t fread(
   void *buffer,
   size_t size,
   size_t count,
   FILE *stream
);
Parameters
buffer
Storage location for data.
size
Item size in bytes.
count
Maximum number of items to be read.
stream
Pointer to FILE structure.



zsh_7769
驱动小牛
驱动小牛
  • 注册日期2004-04-15
  • 最后登录2005-12-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-09-06 15:46
虽然问题已经解决,但还是要谢谢楼上两位的回答,我是用ftell()和fseek()这两个函数来定位的,光用(fseek( a, i * 16383, SEEK_SET); //移动文件指针指向下一帧的开始位置)会出现定位不准的现象,用下面这样就可以了。
fseek(fp,pos,0);
for(j=0;j<=16382;j++)
{
     fscanf(fp, "%d", &a[j]);    
}
pos=ftell(fp);
z901dyxz
驱动牛犊
驱动牛犊
  • 注册日期2004-09-09
  • 最后登录2004-09-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-09-09 22:59
我也向知道
z901dyxz
驱动牛犊
驱动牛犊
  • 注册日期2004-09-09
  • 最后登录2004-09-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-09-09 23:00
怎么没人回答
zsh_7769
驱动小牛
驱动小牛
  • 注册日期2004-04-15
  • 最后登录2005-12-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-09-10 10:26
想知道什么?
游客

返回顶部