| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 349 人关注过本帖
标题:sscanf语句读取字符串信息
只看楼主 加入收藏
elesun8
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2014-12-29
结帖率:42.86%
收藏
已结贴  问题点数:5 回复次数:2 
sscanf语句读取字符串信息
sscanf语句读取字符串信息


串口收到的字符串如下:符号《》内部,不含《》

AT+CMGR=23

+CMGR: "REC UNREAD","1008611","","14/12/22,17:29:02+32"
60A8672C6708901A4FE18D3900320034002E003700345143FF0C4F59989D00310031002E003800385143FF0C52694F59901A8BDD5206949FFF1A54085BB66B224F5900310039003500355206949FFF0C00567F5153056708595799104F5900310030003000305206949F300252694F594E0A7F516D4191CF002F65F6957FFF1A770151850033


现在我想从这个长字符串里面读取信息
        char Msg_REC[10] = {0};//短信标识,是否已经读取过此短信  此字符串应为“REC UNREAD”
        char Msg_tele_no[11] = {0};//短信号码  此字符串应为"1008611"
        char Msg_time[20] = {0};//短信接收时间  此字符串应为"14/12/22,17:29:02+32"
        char Msg_content[512] = {0};//短信内容,unicode编码形式 此字符串应为60A8672......


我写的C解析程序如下 VC:


char data_buff[] = "AT+CMGR=23\r\n+CMGR: \"REC UNREAD\",\"1008611",\"\",\"14/12/22,17:29:02+32"\r\n60A8672C6708901A4FE18D3900320034002E003700345143FF0C4F59989D00310031002E003800385143FF0C52694F59901A8BDD5206949FFF1A54085BB66B224F5900310039003500355206949FFF0C00567F5153056708595799104F5900310030003000305206949F300252694F594E0A7F516D4191CF002F65F6957FFF1A770151850033\r\n";

        char Msg_REC[10] = {0};//短信标识,是否已经读取过此短信  此字符串应为“REC UNREAD”
        char Msg_tele_no[11] = {0};//短信号码  此字符串应为"1008611"
        char Msg_time[20] = {0};//短信接收时间  此字符串应为"14/12/22,17:29:02+32"
        char Msg_content[512] = {0};//短信内容,unicode编码形式 此字符串应为60A8672......

int main(void)
{
         ret;

ret = sscanf(data_buff,"%*[^\"]%s\",\"%s\",\"\",\"%s\"%s",Msg_REC,Msg_tele_no,Msg_time,Msg_content);

printf("ret from CMGR: %d\n",ret);//打印出匹配的参数个数
printf("Msg_REC from CMGR: %s\n",Msg_REC);
printf("Msg_tele_no from CMGR: %s\n",Msg_tele_no);
printf("Msg_time from CMGR: %s\n",Msg_time);
printf("Msg_content from CMGR: %s\n",Msg_content);

return(0);
}


字符串定义char data_buff[]应该是正确的吧?
sscanf函数如何读取字符串里的信息?
搜索更多相关主题的帖子: 字符串 信息 短信 
2014-12-29 21:54
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:5 
字符串定义char data_buff[]应该是正确的吧?
sscanf函数如何读取字符串里的信息?
-------- 听不懂呐,“字符串定义char data_buff[]应该是正确的吧”你自己puts(data_buff)一下就知道了呀,何必问别人?“sscanf函数如何读取字符串里的信息?”你自己不是写出来了吗?

程序代码:
#include <stdio.h>

int main( void )
{
    const char* data_buff = "AT+CMGR=23\r\n\r\n+CMGR: \"REC UNREAD\",\"1008611\",\"\",\"14/12/22,17:29:02+32\"\r\n60A8672C6708901A4FE18D3900320034002E003700345143FF0C4F59989D00310031002E003800385143FF0C52694F59901A8BDD5206949FFF1A54085BB66B224F5900310039003500355206949FFF0C00567F5153056708595799104F5900310030003000305206949F300252694F594E0A7F516D4191CF002F65F6957FFF1A770151850033\r\n";

    char Msg_REC[10+1];
    char Msg_tele_no[11+1];
    char Msg_time[20+1];
    char Msg_content[512+1];

    int ret = sscanf( data_buff, "%*[^\"]\"%10[^\"]\",\"%11[^\"]\",\"\",\"%20[^\"]\" %512s", Msg_REC, Msg_tele_no, Msg_time, Msg_content );
    if( ret == 4 )
    {
        printf( "Msg_REC: %.10s\n", Msg_REC );
        printf( "Msg_tele_no: %.11s\n", Msg_tele_no );
        printf( "Msg_time: %.20s\n", Msg_time );
        printf( "Msg_content: %.512s\n", Msg_content );
    }

    return 0;
}

2014-12-30 10:12
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
错的,你这样得不到想要的结果。

授人以渔,不授人以鱼。
2014-12-30 16:37
快速回复:sscanf语句读取字符串信息
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013868 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved