[疑难问答] strstr()检测不到存在的字符

[复制链接]
 楼主| juliestephen 发表于 2023-5-16 09:00 | 显示全部楼层 |阅读模式
  在单片机调试的的时候,发现目标‘字符串’中的 目标字符,strstr()函数竟然检测不到(比较不出来)返回的时候0x00地址(NULL),很是奇怪,最后分析发现,原来是目标‘字符串’中含有0x00数据,strstr()函数碰到0x00就终止了查找,所以0x00后面的目标字符无法查到,strstr()返回的是0x0地址,指向的字符是0x00上的字符。

  在用strstr查找之前加了一个剔除0x00数据才小程序,去掉待检数组中的0x00数据,问题就解决了。

  1. void  remove_out_0x00_dat(char *in_buff, int data_len)
  2. {
  3. int str_len = 0;
  4. for(int i = 0; i < data_len; i++)
  5.     {
  6. if(in_buff[i] != 0x00)
  7.         {
  8. in_buff[str_len] = in_buff[i];
  9. str_len++;
  10.         }
  11.     }
  12. }


uytyu 发表于 2023-8-9 15:07 | 显示全部楼层
如果指定的子串不存在,则返回空指针。
fengm 发表于 2023-8-9 16:15 | 显示全部楼层
strstr()函数在处理字符串时,会根据字符串的编码方式进行匹配
mickit 发表于 2023-8-9 17:13 | 显示全部楼层
如果字符串的编码方式与strstr()函数的预期不一致,可能导致无法找到匹配的位置
updownq 发表于 2023-8-9 17:24 | 显示全部楼层
如果目标字符串中没有包含子字符串,那么strstr()将始终返回NULL。
maudlu 发表于 2023-8-9 21:33 | 显示全部楼层
如果源字符串或目标子字符串中没有显式地包含终止符,那么 strstr() 函数可能无法正确工作。
bestwell 发表于 2023-8-13 21:34 | 显示全部楼层
如果目标子字符串不在源字符串中,则返回空指针(NULL)
benjaminka 发表于 2023-8-14 09:59 | 显示全部楼层
如果存在,它将返回指向包含子字符串的字符串的指针;否则,它将返回NULL。
cemaj 发表于 2023-8-14 10:15 | 显示全部楼层
strstr()函数是区分大小写的,如果子字符串的大小写与原字符串不匹配,将无法找到匹配的位置
chenci2013 发表于 2023-8-14 11:01 | 显示全部楼层
会在字符串中搜索指定子串的第一次出现位置,如果指定的子串不存在,则返回空指针。
usysm 发表于 2023-8-14 11:35 | 显示全部楼层
可能是因为使用的是C99标准              
houjiakai 发表于 2023-8-14 15:37 | 显示全部楼层
trstr()函数是C语言标准库<string.h>中的一个函数,用于查找字符串中是否存在给定子字符串
zerorobert 发表于 2023-8-14 15:49 | 显示全部楼层
strstr()函数在查找时会受到特殊字符的影响。
earlmax 发表于 2023-8-14 16:54 | 显示全部楼层
在C99标准中,strstr()函数是在字符串中搜索指定子串的第一次出现位置
youtome 发表于 2023-8-14 17:46 | 显示全部楼层
如果目标字符串中有转义序列(如’\n’),而子字符串中没有相应的反转序列,那么strstr()将无法找到子字符串。
febgxu 发表于 2023-8-14 20:20 | 显示全部楼层
如果子字符串中有空格或特殊字符,尝试使用字符串处理函数(如strtok())对子字符串进行预处理,以便去除空格和其他特殊字符。
ccook11 发表于 2023-8-14 22:07 | 显示全部楼层
strstr() 函数是以 \0 作为字符串的结束符来进行搜索的
pixhw 发表于 2023-8-15 13:21 | 显示全部楼层
在这种情况下,即使子字符串存在于目标字符串中,strstr()也无法返回正确的结果。
maqianqu 发表于 2023-8-15 14:52 | 显示全部楼层
strstr() 函数用于在一个字符串中查找第一次出现的目标子字符串
ulystronglll 发表于 2023-8-15 15:41 | 显示全部楼层
增加子字符串的长度,使其大于或等于目标字符串的长度。这样可以提高找到子字符串的可能性。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

32

主题

1499

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部