C语言问题。

2019-03-23 18:07发布

C字符串函数 char *strstr(char *str1, const char *str2);传入的参数必须是char *p


现在我在stm32上定义了一个中文 GB2312编码的字符串 比如 unsigned char p[]="好好学习abcd"
现在需要找出 习 的位置,应该调用哪个函数啊?
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
ywlzh
1楼-- · 2019-03-23 23:06
/ 本帖最后由 ywlzh 于 2016-7-6 17:35 编辑

这个问题也不难,你主要是要知道一个中文字符占几个字节,2个!

那么先包含头文件
  1. #include <string.h>
复制代码然后是程序部分     
        u8 x=0;
        unsigned char p[13]="好好学习abcd";
        unsigned char ptr[3]="习";        
        char *R_p;
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2

         LCD_Init();           //初始化LCD FSMC接口
        POINT_COLOR=RED;      //画笔颜 {MOD}:红 {MOD}
        
        R_p=strstr(p,ptr);  //这个是重点!

        if(R_p){
                LCD_ShowString(30,40,210,24,24,"baohan");
                for(x=0;x<13;x++){
                        if(p[x]==ptr[0])
                                if(p[x+1]==ptr[1]){
                                        LCD_ShowString(30,70,210,30,24,"weizhi:");
                                  LCD_ShowxNum(30,90,x,24,24,1);
                                }
                }
        }else{
                LCD_ShowString(30,40,210,24,24,"bubaohan");
        }

以上用拼音先代替着,可别学我
看结果:
QQ图片20160706172935.png

最后: 程序你要是想深入,可以继续优化,我这只是一个解决的办法,更多的你也可以去解决



吐槽一句,发出来的代码被吞了大部分搞了半天才好,最后不用<>


BlackHeart4theW
2楼-- · 2019-03-24 00:27
大神真认真。
yl20084784
3楼-- · 2019-03-24 04:42
 精彩回答 2  元偷偷看……
ywlzh
4楼-- · 2019-03-24 06:58
yl20084784 发表于 2016-7-7 11:10
谢谢大大的热情帮助。
因为strstr(p,ptr);这个函数传入的参数是char * 如果使用unsigned char *做实参传 ...

如果纠结char * 与unsigned char *, 你大可将你的字符串用char* 定义

一周热门 更多>