【发布时间】:2021-04-12 03:16:13
【问题描述】:
我正在尝试遍历一个文本文件并为每一行检查一个特定的子字符串 使用内存分配创建的就在其中。 我的问题是,为了使 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 == '\0');
}
char* substring(char* X, char* Y, int size)
{
while (*X != '\0')
{
if (compare(X, Y, size))
{
printf("in\n");
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
我该如何解决这个问题?如何在迭代时忽略第二个字符串的 \0 以便在文件中找到它?
【问题讨论】:
-
为什么要添加
/0,而不是\0? -
可能你的意思是
strlen(lua_name) - 1代替strlen(lua_name - 1) -
strlen(lua_name - 1)为什么要从字符串中减去?您的意思是从strlen结果中减去吗?即使是这样,为什么?strlen不计算 NUL 终止符。 -
@MikeCAT 是的,我现在修好了,抱歉在这里写错了。
-
@IrAM 修复它,错过复制它
标签: c string function substring