文字列操作はいろいろと面倒です。
ただ、今現在文字列を多く使うことに触れているので、
ちょっとまとめてみた。


文字列の文字を消したり、置き換えたりするものです。
Javaだと、

文字を置き換える・・・replace( str1, str2 )
前後の空白スペース削除・・・trim()

など、文字列操作に関してすでに用意されていますが、
Cには無いので自前で作るしかない。




以下作ってみたモノ。
バグあるかも・・・

/*!
 * @brief		バッファ内の特定の文字を削除します。
 * 
 * @param	         buff	文字列が格納されたバッファ
 * @param	         str	消去する文字
 *
 * @return	length	削除後の文字列の長さ
 */
size_t DeleteString( char *buff, const char *str )
{
    char    *pPoint;	// アドレス格納ポインタ
    size_t  length;	// バッファサイズ

    length = strlen( buff );

    /* 指定した文字列のアドレスを取得し、
     * 指定した文字列がなくなったらwhile()を抜ける
     */
    while( (pPoint = strstr( buff, str )) != NULL ){
 	buff = pPoint;		// アドレスコピー
	pPoint += strlen( str );	// 文字数分移動する
	strcpy( buff, pPoint );	// 文字列コピー
	length -= strlen( str );	// 減らした分、長さを減らす
    }

    return length;
}


/*!
 * @brief		バッファ内の特定の文字を、指定した文字に変換します。
 * 
 * @param	         buff	文字列が格納されたバッファ
 * @param	         str1	変更前の文字
 * @param   	str2	変更後の文字
 *
 * @return	length	削除後の文字列の長さ
 */
size_t ReplaceString( char *buff, const char *str1, const char *str2 )
{
    char	     *pPoint;
    size_t    length, stlen1, stlen2;

    length = strlen( buff );
    stlen1 = strlen( str1 );
    stlen2 = strlen( str2 );

    /* 指定した文字列のアドレスを取得し、
     * 指定した文字列がなくなったらwhile()を抜ける
     */
    while( (pPoint = strstr( buff, str1 )) != NULL ){
    	memmove( pPoint + stlen2, pPoint + stlen1, strlen( buff ) - (pPoint + stlen1 - buff ) + 1);
	memcpy( pPoint, str2, stlen2);
	length += stlen2 - stlen1;		// 文字の長さ調整
    }

    return length;
}


なぜ、returnでサイズを返しているかというと、
ファイルを開き、そのファイルの文字列を操作して書き込む。
という操作において、

fwrite( buf, size, length, fp );
で書き込む際に、文字消去や、置き換えをするとlengthの値が変わってしまうので、
変えた分、長さを返してみました。

ReplaceString()とか、書いてて少し怪しいなと思いました・・・。
要確認ですね^^;