ASCII转换成一组16进制的数据的时候,数组里就是没有值【已经解决,谢谢各位高手】
我在程序里做运算,把一组ASCII转换成一组16进制的数据,运行的时候发现,程序能够正常执行,但是,存放16进制数据的数组里没有数,单步调试发现,能够运算与赋值,可是数组里就是没有值,这是怎么回事??谢谢高手指点!![ 本帖最后由 l-huang 于 2008-9-28 16:12 编辑 ] 兄弟将这个程序上传让大家调试一下! int CVICALLBACK ReadFromFile (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
//char *t;
int i,j,k,m,len=0;
int a,b,d,xbnum,endnum,fnum;
char f;
char c1,c2;
unsigned char c3,c4,c;
switch (event)
{
case EVENT_COMMIT:
FileSelectPopup ("", "*.dat", "", "读取数据",VAL_LOAD_BUTTON, 0, 0, 1, 0, Rfilename);
Readfp= fopen(Rfilename, "r");
FromFile=1;
while(!feof(Readfp))
{
t=fgetc(Readfp);
len++;
}
fclose(Readfp);
first=(char *)malloc(len);
///去掉枕头及0x
for(i=18,j=0;i<len;i++,j++)
{
if((t=='0')&&(t=='x'))
i=i+2;
first=t;
}
temp= (char *)malloc(j);
//去掉空格
for(k=0,m=0;k<j;k++,m++)
{
if(first==0x0A)
k=k+1;
temp=first;
}
free(first);
d=(int)(m/2)+1;
end =(char *)malloc(d);
for (a=0,b=0;a<m;a++,b++)
{
c1=0;
c2=0;
c3=0;
if((temp>='0')&&(temp<='9'))
c1=temp-'0';
else if((temp>='A')&&(temp<='F'))
c1=temp-'A'+10;
a++;
if(a>=d)break;
if ((temp>='0')&&(temp<='9')) //
c2=temp-'0'; //'0'到'9'
else if ((temp>='A')&&(temp<='F'))
c2=temp-'A'+10; //'A'到'F'
c3=c1*16+c2;
x=c3; //问题处在这里,x里面没有数据,
if (b>=d)break;
printf("this is a test %x\n",x); //可是这里却能打印出数据,
}
}
free(end);
}
return 0;
}
///下面是原始数据
1651 1 10000 0 28
0x000055AA
0xD73C6F34
0xC7BACF43
0xBD3C5C76
0xDAC120DA
0x833E8562
0x55BD6F21
0x044336D5
0x48435074
0xA442DCF3
0x9A0055AA 这个这个。。。。。。。
兄弟还是压缩上传程序吧,这样直接贴出来没有办法查的,太难看出问题了,并且没有办法调试!
页:
[1]