Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在包含新行的字符串中搜索?_C - Fatal编程技术网

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 dump
inData
。我同意@BLUEPIXY,
strstr()
将换行符视为任何其他字符。不过,我也会将您的调试扩展到
respond
。您确定
respond
指向字符
C
M
D
\0
?如果
respond
包含一个换行符,或者不包含NUL分隔符(
\0
),则
strstr()
同样会失败。谢谢大家,我对它失去了理智,我想即使我将它转储,我也看不到一些东西。
strstrstr
可以找到换行符(包括)。
CMD
前面有一个非法字符。(可能是
'\0'
)谢谢,我怎么看不出来?我在这里展示的是inData print.hex dump
inData
。我同意@BLUEPIXY,
strstr()
将换行符视为任何其他字符。不过,我也会将您的调试扩展到
respond
。您确定
respond
指向字符
C
M
D
\0
?如果
respond
包含换行符,或者不包含NUL分隔符(
\0
),则
strstr()
同样会失败。谢谢大家,我对它失去了理智,我想即使我将它转储,我也看不到一些东西。