比较文件中的字符串和C中的mallocated字符串



我正在尝试迭代一个文本文件,对于每一行,检查是否有特定的子字符串通过内存分配创建的。我的问题是,为了使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)字符。

最新更新