找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3069|回复: 5
打印 上一主题 下一主题
收起左侧

单片机C语言提取字符串函数的返回数值方法求助

[复制链接]
跳转到指定楼层
楼主
20黑币
我想实现一个函数传入一个数组,在函数内部进行数据提取,把提取的数字进行整合成一个整数,并把结果返还给函数.
但是我编写的方法存在返回的结果多出02数字.
请求高手帮忙分析一下,或者分享一个,非常感谢.

//提取数字转成整数
int StrGetNum(char *str) {
    int i = 0, j = 0;
    int n = 0;
    while(str !='\0')
    {
        while(*str >= '0' && *str <= '9')
        {
            n *= 10;
            n += *str - '0';
            UART0_Send_String("加\r\n");
           str ++;
        }
          str ++;
//       if(str =='\0')return        n        ;
    }
                return        n        ;
}
//主函数
mian(){
     sprintf(BuffSrc,"%d",StrGetNum("A1"));        //把数字转成字符串
      UART0_Send_String(BuffSrc);  //打印字符串到串口
     UART0_Send_String("\r\n");
}
串口打印结果



102

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:123289 发表于 2018-12-24 11:28 | 只看该作者
注意一下:
汉字,依编码格式的不同,有2、3、4个字节构成。至少是两个字节。
所以你必须用相应长度的变量才能读取它。
回复

使用道具 举报

板凳
ID:383374 发表于 2018-12-25 01:13 来自手机 | 只看该作者
我现在处理的又不是汉字
回复

使用道具 举报

地板
ID:383374 发表于 2018-12-25 01:15 来自手机 | 只看该作者
而且我新定位一个数组然后判断是不是数字是就存进去,不是就不存,然后再处理成数字也不行
回复

使用道具 举报

5#
ID:123289 发表于 2018-12-25 12:29 | 只看该作者
明白了,你不是提取汉字编码,而是要提出混在汉字中的数字,是码?
“混在汉字中的数字”,也不是数字形式,它是ASCII码,是以字符形式存在的。
例如:108
是由:31H 30H 38H 组成的。
回复

使用道具 举报

6#
ID:383374 发表于 2019-2-11 00:50 来自手机 | 只看该作者
是硬件问题,了买了5种蓝牙,有一种非常正常
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表