打印
[疑难问答]

strstr()检测不到存在的字符

[复制链接]
2484|42
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
juliestephen|  楼主 | 2023-5-16 09:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  在单片机调试的的时候,发现目标‘字符串’中的 目标字符,strstr()函数竟然检测不到(比较不出来)返回的时候0x00地址(NULL),很是奇怪,最后分析发现,原来是目标‘字符串’中含有0x00数据,strstr()函数碰到0x00就终止了查找,所以0x00后面的目标字符无法查到,strstr()返回的是0x0地址,指向的字符是0x00上的字符。

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

void  remove_out_0x00_dat(char *in_buff, int data_len)
{
int str_len = 0;
for(int i = 0; i < data_len; i++)
    {
if(in_buff[i] != 0x00)
        {
in_buff[str_len] = in_buff[i];
str_len++;
        }
    }
}


使用特权

评论回复
沙发
uytyu| | 2023-8-9 15:07 | 只看该作者
如果指定的子串不存在,则返回空指针。

使用特权

评论回复
板凳
fengm| | 2023-8-9 16:15 | 只看该作者
strstr()函数在处理字符串时,会根据字符串的编码方式进行匹配

使用特权

评论回复
地板
mickit| | 2023-8-9 17:13 | 只看该作者
如果字符串的编码方式与strstr()函数的预期不一致,可能导致无法找到匹配的位置

使用特权

评论回复
5
updownq| | 2023-8-9 17:24 | 只看该作者
如果目标字符串中没有包含子字符串,那么strstr()将始终返回NULL。

使用特权

评论回复
6
maudlu| | 2023-8-9 21:33 | 只看该作者
如果源字符串或目标子字符串中没有显式地包含终止符,那么 strstr() 函数可能无法正确工作。

使用特权

评论回复
7
bestwell| | 2023-8-13 21:34 | 只看该作者
如果目标子字符串不在源字符串中,则返回空指针(NULL)

使用特权

评论回复
8
benjaminka| | 2023-8-14 09:59 | 只看该作者
如果存在,它将返回指向包含子字符串的字符串的指针;否则,它将返回NULL。

使用特权

评论回复
9
cemaj| | 2023-8-14 10:15 | 只看该作者
strstr()函数是区分大小写的,如果子字符串的大小写与原字符串不匹配,将无法找到匹配的位置

使用特权

评论回复
10
chenci2013| | 2023-8-14 11:01 | 只看该作者
会在字符串中搜索指定子串的第一次出现位置,如果指定的子串不存在,则返回空指针。

使用特权

评论回复
11
usysm| | 2023-8-14 11:35 | 只看该作者
可能是因为使用的是C99标准              

使用特权

评论回复
12
houjiakai| | 2023-8-14 15:37 | 只看该作者
trstr()函数是C语言标准库<string.h>中的一个函数,用于查找字符串中是否存在给定子字符串

使用特权

评论回复
13
zerorobert| | 2023-8-14 15:49 | 只看该作者
strstr()函数在查找时会受到特殊字符的影响。

使用特权

评论回复
14
earlmax| | 2023-8-14 16:54 | 只看该作者
在C99标准中,strstr()函数是在字符串中搜索指定子串的第一次出现位置

使用特权

评论回复
15
youtome| | 2023-8-14 17:46 | 只看该作者
如果目标字符串中有转义序列(如’\n’),而子字符串中没有相应的反转序列,那么strstr()将无法找到子字符串。

使用特权

评论回复
16
febgxu| | 2023-8-14 20:20 | 只看该作者
如果子字符串中有空格或特殊字符,尝试使用字符串处理函数(如strtok())对子字符串进行预处理,以便去除空格和其他特殊字符。

使用特权

评论回复
17
ccook11| | 2023-8-14 22:07 | 只看该作者
strstr() 函数是以 \0 作为字符串的结束符来进行搜索的

使用特权

评论回复
18
pixhw| | 2023-8-15 13:21 | 只看该作者
在这种情况下,即使子字符串存在于目标字符串中,strstr()也无法返回正确的结果。

使用特权

评论回复
19
maqianqu| | 2023-8-15 14:52 | 只看该作者
strstr() 函数用于在一个字符串中查找第一次出现的目标子字符串

使用特权

评论回复
20
ulystronglll| | 2023-8-15 15:41 | 只看该作者
增加子字符串的长度,使其大于或等于目标字符串的长度。这样可以提高找到子字符串的可能性。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

32

主题

1289

帖子

2

粉丝