搜索包含转义字符的字符串

时间:2015-01-13 18:12:54

标签: c

我有一个包含此特定字符串的二进制文件:^@^Aname^@Team Fortress 2

这是我尝试使用memmem找到它的方式:

char *game = "Team Fortress 2";
sprintf(searchString,"\1\1name\1%s\0",game);

...

if(pos = memmem(buffer,result,searchString,strlen(searchString)))

如何匹配转义字符^@^A? 它似乎找到\1\1name,而不是game中的searchString

2 个答案:

答案 0 :(得分:1)

因为你的字符串包含空值,所以它不是有效的C字符串,而字符串操作函数(例如memmem和strlen)也不起作用。你必须推出自己的版本。

最简单的方法是循环遍历字符串的每个索引,然后使用第二个循环来检查您正在搜索的字符串。有更好的和更快的方法,但如果你不需要额外的速度,它们更难以理解和实施。有关该主题的概述,请参阅Wikipedia

答案 1 :(得分:0)

这不是符号表示法吗?

char *game = "Team Fortress 2";
sprintf(searchString,"%c%cname%c%s\0",(char)0, (char)1, (char)0, game);

...

if(pos = memmem(buffer,result,searchString,strlen(searchString)))