一个fopen 文件相关的有关问题

求助一个fopen 文件相关的问题
我想实现一个文件内容修改的功能。 

现在是这样做到, 通过关键字(要修改文件中的某字符串),在对应文件中找要修改的位置。然后在这个位置上进行修改。

比如在特定位置上增加一块新内容。 新的内容来自于一模板文件。

//程序中写死查找关键字
char keyword[] = "关键字";

1.先将文件内容读入buf.

fp = fopen("我的文件","rb);

char* file_buf = NULL;

if(fp)
{
  len;
  fseek(fp,0,SEEK_END);
  len = ftell(fp);
  fseek(fp,0,SEEK_SET);  
  if( len ){
file_buf = (char*)malloc(len+1);
fread(file_buf,1,len,fp);
file_buf[len] = '\0';
  }
  fclose(fp);
}

2. 在buf中通过关键字查找
  char* data = file_buf;
  char* pstart= NULL;
  char* pend= NULL;
  pstart= strstr(data,keyword);
  if(pstart)
  {
  pend = pstart + stlen(keyword);
  } 
   
  // 从模板读入要插入的数据 ,读入的方式也是fopen,rb
  char * pinputdata = readDataFromTemplate();

  //重新写文件 fopen 方式wb
  fwrite(pstart,len1,1,fp);
  fwrite(pinputdata ,len2,1,fp);
  fwrite(pend ,len3,1,fp);

结果Ok,但我稍微做下修改,问题就来了

3.现在为了方便修改关键字,我想把查找关键字keyword的内容也放到模板文件里了。用fopen rb方式读出来

char * pkeyword= readKeywordFromTemplate();

// 再搜索关键字。
  pstart = strstr(data,pkeyword);

这时候发现 pstart 始终是Null. strstr没找到关键字。pkeyword的内容我都通过log打出来了,没问题。而且拷贝pkeyword内容后,直接打开要修改的文件用ctrl+f来查找,也能找到。但程序中,strstr就找不到,不知道为啥。

我怀疑,是不是因为data和pkeyword是来自于两个文件的数据,有可能两个文件的编码不同,结果造成strstr找不到?会是这样么,我还没验证。 但目前情况我是用rb方式打开的啊,应该不涉及编码的问题啊。

描述了一大堆文字,,希望热心的朋友耐心看看,帮忙指点,不胜感激。





------解决方案--------------------
确定两个文件中的内容都正确么,可以输出看一下。这种只能自己调试了。
------解决方案--------------------
你可以换个两个相同的文件,然后试试,看看pstart 还为空吗