void str_replace(char *str, const char *target_str, const char *new_str) { int target_len = strlen(target_str); //置換対象文字列の長さ int new_len = strlen(new_str); //置換後文字列の長さ int str_len = strlen(str); //文字列の長さ char *replace_pos; //検索を開始する位置 //置換文字列の場所を検索 while(NULL != (replace_pos = strstr(str, target_str))) { //文字列を挿入する場所を作成する memmove(replace_pos + new_len, replace_pos + target_len, strlen(replace_pos) - target_len); //置換文字列を挿入する memmove(replace_pos, new_str, new_len); //文字数が少なくなる場合、NULLコードの位置も変更 if(target_len > new_len) { *(str + str_len - target_len + new_len) = '\0'; str_len = strlen(str); } } }