C语言中长字符串的提取

zhangyanjin 2008-10-23 09:38:35
最近在做一个上位机与PLC通信的程序,我从PLC收回来的是一个长的字符串“@00RD000001000200030004…0025*\r”,字符串间从RD开始的两位是“00”,“00”表示接收正确,而“00”之后的是一串4位4位的数据,从“0001”到“0025”共有25个数据,它们是4位的十进制数据,我现在是想把数据从这个字符串里面提取出来,从字符串的第7位开始,然后4个4个地提取,并把提取出来的数据放到数组中去,如第一个提取出来的是“0001”,第二个是“0002”直到第25个“0025”到*就结束。我是一个C语言新手,昨天用SSCANF()弄了一天都不行。
请教高手,能不能帮我就上面那个字符串编一个小程序出来?在下感激不尽!!!
...全文
92 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangyanjin 2008-10-24
  • 打赏
  • 举报
回复
多谢icansaymyabc了。
icansaymyabc 2008-10-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 icansaymyabc 的回复:]
char t[25][4];
int v[25];
sscanf(src,"%*7c%4c%4c...%4c",t[0],t[1], ... t[24]);
for (int i=0;i <25;i++) sscanf(t[i],"%d",&(v[i]));
[/Quote]
有误,第一句更正为:
char t[25][5];
icansaymyabc 2008-10-24
  • 打赏
  • 举报
回复
char t[25][4];
int v[25];
sscanf(src,"%*7c%4c%4c...%4c",t[0],t[1], ... t[24]);
for (int i=0;i<25;i++) sscanf(t[i],"%d",&(v[i]));
zhangyanjin 2008-10-23
  • 打赏
  • 举报
回复
每次都是,字符串“@00RD000001000200030004…0025*\r”中只是从第7位开始,后面的每4位4位的十进制数据是每收回一次是变化的。
icansaymyabc 2008-10-23
  • 打赏
  • 举报
回复
你是每次从PLC接受的长字符串都包含25个数码?

是的话才能用 sscanf 读取,否则一个字符一个字符地处理。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧