嘿,我想在文件中搜索子字符串“Step1”并使用我的代码进行搜索。尽管该文件包含 NULL 字符(主要是 HEX 字符)。由于我的文件中有这些 Null 字符,我的解析器失败并返回 true。我已经尝试并搜索了很多关于替换和删除 NULL 字符的资料,但都是徒劳的。 这是我的解析器:
char *str="Step1";
fp=fopen(fname, "rb");
if(NULL == fp)
return(-1);
while(fgets(temp, 400, fp)!= NULL)
{
if((strstr(temp, str1))!= NULL)
{
system("start Step1.bat");
count_step[0]++;
}
}
if(fp)
fclose(fp);
这是我的文本文件的样子:
NULLNULLNULLNULLStep1NULLNULLNULL
NULLNULLStep1
请给我建议一个我可以合并的快速解决方案
最佳答案
如果文件是二进制文件,则不能使用 fgets
或 strstr
等字符串处理函数。
一种可能(且缓慢)的解决方案是使用 fread
读取一大块数据然后使用 memcmp
搜索“字符串”关于文件中的所有数据。作为一个非常简单的优化,先在字符串中寻找第一个字节,然后使用memcmp
。
其他解决方案可能包括搜索树,如 a trie .
关于c - 在文本文件中的 NULL 字符中搜索字符串中的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33537771/