Редактировать строку в текстовом файле с++
void changeInfo() {
fopen_s(&file, "data.txt", "r+");
char stf[255] = { 0 }, rtf[255] = { 0 }, str[255] = { 0 };
printf("Naiti po klyuchevumu slovu");
cin >> stf;
printf("Vvedite tekst dlya zameny info po klyuchevomu slovu");
cin >> rtf;
while (fgets(str, 255, file) != NULL)
{
char* tmp_ptr = strstr(str, stf);
while (tmp_ptr != NULL)
{
char tmp_str[255];
strcpy(tmp_str, tmp_ptr + strlen(stf));
strcpy(str + strlen(str) - strlen(tmp_ptr), rtf);
strcat(str, tmp_str);
tmp_ptr = strstr(str, stf);
}
printf("%s", str);
}
fprintf_s(file, "% s", str);
fclose(file);
getchar();
}
Моя проблема в том, что он так же сохраняет старую информацию и плюссоздаёт новую строку в текстовом файле. Как сохранить в старой НОВЫЕ изменения?