c - 在文本文件中的 NULL 字符中搜索字符串中的子字符串

标签 c string search replace null

嘿,我想在文件中搜索子字符串“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

请给我建议一个我可以合并的快速解决方案

最佳答案

如果文件是二进制文件,则不能使用 fgetsstrstr 等字符串处理函数。

一种可能(且缓慢)的解决方案是使用 fread 读取一大块数据然后使用 memcmp 搜索“字符串”关于文件中的所有数据。作为一个非常简单的优化,先在字符串中寻找第一个字节,然后使用memcmp

其他解决方案可能包括搜索树,如 a trie .

关于c - 在文本文件中的 NULL 字符中搜索字符串中的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33537771/

相关文章:

c - 跨进程使用 Mutex

c - Visual Studio 2010 保存项目

javascript - 为 Rails 字符串的数字部分着色最有效的方法?

c++ - 动态 ArrayList 的线性和二进制搜索

Java Arraylist 列出所有元素

c - 如何使用glade xml文件制作可执行程序

c - GCC 不在 printf 中进行默认类型转换

javascript - 加入并替换多次出现的字符串

C++ 在句子中查找单词

sql - 带有 Coldfusion 的 MYSQL - 创建搜索功能的解决方案?