读书人

为啥加了一句数组赋值语句fgets只能读

发布时间: 2013-04-07 12:50:11 作者: rapoo

为什么加了一句数组赋值语句fgets只能读一半数据了
本帖最后由 xiaoze6756 于 2013-03-31 18:09:37 编辑 原来可以把数据都读进去的,但是增加了红色的将一维数组数据放到2维数组里面就只能读一半就读不进去了,,查了一下TxtFlag变成了3,这是怎么回事,求大神指教
while(TxtFlag == 1)

{
circlecout=0;
fgets(GPSComBufA,320,fpA);
//+++++++++++++++++++完成读入的每行数据的转换++++++++++++++++++++++++++++//
int i=0,j = 0;
a = 0;

while(GPSComBufA[i] != 0x0a)
{

if(GPSComBufA[i] != 0x20)
{
a = atoi_new(GPSComBufA[i]);
GPSComBuf1[j] = a;
j++;
}
i++;
}

/*if (a == 34)
{
GPSComBuf1[i] = a;
break;
}

}*/
if ((GPSComBuf1[0]*10+GPSComBuf1[1])<=5) //收集GEO的星历数据
{
int zizhenhao =GPSComBuf1[6]&0x07;
int SVnum = (GPSComBuf1[0]*10+GPSComBuf1[1]);
int zizhenyenum =((GPSComBuf1[13]&0x03)*16+(GPSComBuf1[14]&0x0c))/4;
if (zizhenhao == 1)
{
for(i=0;i<320;i++)
DataOrigin[zizhenyenum-1][i]=GPSComBuf1[i];

}

}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//if ((GPSComBuf1[0]*10+GPSComBuf1[1])<=5)
// temp_eph = ConvertToEphemerisData1(GPSComBuf1);

//if(temp_eph.SV>=0 && temp_eph.SV<=31)
//eph[temp_eph.SV]=temp_eph;
///////////如果读入的两行数据完全相同,则代表文件已经读完了//////////////////
while(circlecout<=320)
{
if(GPSComBuf11[circlecout]==GPSComBuf1[circlecout])
{circlecout++;
if(GPSComBuf1[circlecout] == 0x0a)
{
TxtFlag =0;
printf("\n******************THE END ********************\n");
fclose(fpA);
fclose(fpOut);
break;
}
}
else
break;
}

///////////////////////////////////////////////////////////////////////////////
for(int k=0;k<82;k++)
printf("%x",GPSComBuf1[k]);
printf("\n");
for(int i=0;i<320;i++)
GPSComBuf11[i] = GPSComBuf1[i];

}



[解决办法]
估计和红色代码改变了i的值有关系,换个变量名试试吧

读书人网 >C语言

热点推荐