字符串提取出错
我在用RS232通信后收回来的是一个长的字符串"@00WD0000010002000300050006…000A…000F……0025*\r",字符串间是一串4位的数据,从“0001”到“0025”共有25个数据,我现在是想把这个字符串里面的数据提取出来,从字符串的第7位开始,然后4位4位(4位字符)地提取,如第一个提取出来的是“0001”,第二个是“0002”直到第25个“0025”到*就结束,因为每4位的数据是16进制的数据。我运行的与printf输出的不一致,不知道是什么原因,请高手指点!
程序见附件! 按照你的排序规则,从“0001”到“0025”共有37个数据(0X25=37);
另外,你的源码中SetCtrlVal (panelHandle,PANEL_STRING_2 ,a);等语句中a、a等的用法不对,在c语言中数组的下标和数组指针是等价的,
a等价于*a,表示数组的起始地址,即指整个数组;
a表示从数组的第四个元素直到数组结尾。 多谢netcreature !
解决了,把a改为a就不会溢出了。
再问一个问题,我通过 Fmt(&b, "%x<%s", a);十六进制字符串转成整数之后,想把整数再转成浮点数,为什么下面语句不行,有没有什么更好的方法。
Fmt(&c,"%f<%x",b);
[ 本帖最后由 xiaowei86 于 2008-11-19 10:33 编辑 ] b和c变量是怎么定义的?为什么要加上取地址运算符? char a;
int i;
int b;
float c;
因为我显示数据要float的,想把整数转成float,然后显示出来。
[ 本帖最后由 xiaowei86 于 2008-11-19 11:00 编辑 ] int i=0;
char a;
double c;
for(i=0;i<25;i++)
Scan (a, "%s>%f", &c);
......
(奇怪!怎么输入方括号不显示了!?)
[ 本帖最后由 netcreature 于 2008-11-19 11:42 编辑 ] 哈哈!我今天早上也纳闷,换了几种方法次都还是这样。
多谢版主了!!!
页:
[1]