何故エラーが出るかわかりません。

replace = strstr(ptemp,"テスト(XXXX年XX月分)");
sprintf(monthfilename,"テスト(%c%c%c%c年%c%c月分)",monthbuf[0],monthbuf[1],monthbuf[2],monthbuf[3],monthbuf[4],monthbuf[5]);
strncpy(replace,monthfilename,sizeof(monthfilename));

fputs(ptemp,fp2);←ここで書き込みアクセス違反でエラー

monthfilenameには201110っていう文字が入ってる。
fp2のファイルポインタはfopenした時にNULLじゃなかったから正常なファイルポインタのはず。
どんな原因が考えられますか?