C 在包含新行的字符串中搜索?
我用的是:C 在包含新行的字符串中搜索?,c,C,我用的是: if(strstr(inData, respond) != NULL) 在inData中搜索字符串CMD 问题是,当新数据如下所示时: Reboot CMD strstr将找不到它,因为它停止搜索新行的位置。 有没有一种优雅的方法(不使用奇特的函数,因为我不能)来克服它?正如评论中所指出的,strstrstr不停在换行符边界,而只停在字符串终止符(\0) 以下是手册页的相关部分: 描述 函数的作用是:查找字符串haystack中第一个出现的子字符串指针。终止符为空 字节 (“
if(strstr(inData, respond) != NULL)
在inData
中搜索字符串CMD
问题是,当新数据如下所示时:
Reboot
CMD
strstr
将找不到它,因为它停止搜索新行的位置。
有没有一种优雅的方法(不使用奇特的函数,因为我不能)来克服它?正如评论中所指出的,strstrstr不停在换行符边界,而只停在字符串终止符(\0) 以下是手册页的相关部分: 描述 函数的作用是:查找字符串haystack中第一个出现的子字符串指针。终止符为空 字节 (“\0”)不进行比较 因此,假设在CMD或inData中有一个空字节。
您应该研究or中的字符串inData和CMD(如@BLUEPIXY所建议的)正如注释中指出的,strstrstr不在换行符边界处停止,而仅在字符串终止符(\0)处停止 以下是手册页的相关部分: 描述 函数的作用是:查找字符串haystack中第一个出现的子字符串指针。终止符为空 字节 (“\0”)不进行比较 因此,假设在CMD或inData中有一个空字节。
您应该研究or中的字符串inData和CMD(如@BLUEPIXY所建议的)
strstr
可以找到换行符(include)。CMD
前面有一个非法字符。(可能是'\0'
)谢谢,我怎么看不出来?我在这里展示的是inData print.hex dumpinData
。我同意@BLUEPIXY,strstr()
将换行符视为任何其他字符。不过,我也会将您的调试扩展到respond
。您确定respond
指向字符C
,M
,D
,\0
?如果respond
包含一个换行符,或者不包含NUL分隔符(\0
),则strstr()
同样会失败。谢谢大家,我对它失去了理智,我想即使我将它转储,我也看不到一些东西。strstrstr
可以找到换行符(包括)。CMD
前面有一个非法字符。(可能是'\0'
)谢谢,我怎么看不出来?我在这里展示的是inData print.hex dumpinData
。我同意@BLUEPIXY,strstr()
将换行符视为任何其他字符。不过,我也会将您的调试扩展到respond
。您确定respond
指向字符C
,M
,D
,\0
?如果respond
包含换行符,或者不包含NUL分隔符(\0
),则strstr()
同样会失败。谢谢大家,我对它失去了理智,我想即使我将它转储,我也看不到一些东西。