文字列が終わってなかった
「すげ替え」るという言葉を使ってる人ってミギー以外ではじめて見た。
fopen に渡す mode の文字列から 'b' を取り除く処理をするメンバ関数。pszDest に修正後の mode 文字列を突っ込むんだけど '\0' が抜けてた。
bool CTextFile::ModifyFlags (const char* pszSource, char* pszDest, int nSize) { bool bBinary; // 'b' の指定があるかどうか bBinary = (strchr(pszSource) != NULL); // フラグが多すぎるときは false を返す if ((int)strlen(pszSource) - bBinary > nSize - 1) return false; // 強制的にテキストモードで開きます // 'b' 以外の文字だけコピーします for (; *pszSource; pszSource++) { if (*pszSource != 'b') { *pszDest = *pszSource; pszDest++; } } pszDest = '\0'; // これが抜けてる return true; }