c - 比较文件中的字符串和 C 中的 malloced 字符串
问题描述
我正在尝试遍历一个文本文件,并且对于每一行,检查一个使用内存分配创建的特定子字符串是否在其中。我的问题是,为了使 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 以便在文件中找到它?
解决方案
您可以使用strnstr
代替strstr
, 并搜索strlen(str)
字符。
推荐阅读
- java - 为什么“类型绑定不匹配:类型?extends T 不是有界参数的有效替代品
> 枚举类型 “? - html - 引导轮播上的对齐按钮
- bash - 如何从 bash 脚本启动多个屏幕会话
- flask-sqlalchemy - 超链接到内联表单标签
- javascript - Array.reduce 中的参数名称应该是什么?
- c# - 从另一个类获取字符串不返回任何结果
- angular - 从反应式表单Angular中的元素自动创建FormControls
- javascript - 如何隐藏代码具有“。”的数据表行 例如 1.1、1.2 通过 jquery?
- hadoop - 如何找到最慢的数据节点?
- python - Python字典交换键:值存在于多个键中时的值对