我正在尝试迭代一个文本文件,对于每一行,检查是否有特定的子字符串通过内存分配创建的。我的问题是,为了使malloc的字符串保持完整,我需要在它的末尾添加\0。因为否则它会在结尾包含一些胡言乱语的字母。这导致我使用strstr不相关,因为它会搜索该字符串,但最后会有一个额外的\0,这会导致搜索失败。
int compare(char *X,char *Y,int size)
{
while (size >0 && *X && *Y)
{
if (*X != *Y)
return 0;
X++;
Y++;
size--;
}
return (*Y == ' ');
}
char* substring(char* X, char* Y, int size)
{
while (*X != ' ')
{
if (compare(X, Y, size))
{
printf("inn");
return X;
}
X++;
}
return NULL;
}
对于实际呼叫:
if (substring(temp, lua_name, strlen(lua_name)-1) != NULL)
{
puts(temp);
}
例如:
payloadSubtree:add(roy_fields.my_data_req,buffer(offset,2))
my_data_req
我该如何解决此问题?如何在迭代第二个字符串时忽略它的\0以便在文件中找到它?
如果您想在nul终止的数组上操作:strstr
如果您想操作指定大小的数组:memmem
您可以使用strnstr
而不是strstr
,并搜索strlen(str)
字符。