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

时间:2015-11-05 06:10:11

标签: 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

请建议我快速解决一下我可以合并

1 个答案:

答案 0 :(得分:2)

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

一种可能(和慢)的解决方案是使用fread读取一大块数据,然后搜索"字符串"对文件中的所有数据使用memcmp。作为一个非常简单的优化,首先查找字符串中的第一个字节,然后使用memcmp

其他解决方案可能包括a trie等搜索树。