Witam. Miałem za zadanie napisać program, który co 5 wyraz wstawi do tekstu słowo wpisane przez użytkownika. Mam z tym nie lada problem, a mianowicie:
Wynik działania mojego programu jest następujący:
Tekst Pliku: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Wynik: 1 2 3 4 5 test8 9 10 11 12test14 15 16 17 18 19 20.
Jak widać program usuwa "słowo" 6 i 7, a zastępuje je test. Wygląda to tak jakby pisał on na włączonym "insert".
Wydaje mi się, że problemem jest funkcja .seekp, i w zasadzie to nie rozumiem dlaczego.
Kod:
#include <iostream>
#include <fstream>
#include <cstring>
#include <cstdio>
using namespace std;
string wyraz;
int ilosc_charow=0, x=5;
char slowo[25];
int main()
{
fstream OtworzPlik;
OtworzPlik.open("wstaw.txt", ios::in | ios::out);
if(OtworzPlik.good()==true)
cout<<"Plik poprawnie otworzony\n";
cout<<"Jaki wyraz mam napisac w pliku, co 5 slowo?\n";
cin>>wyraz;
do {
for(int i=0; i<x; i++)
{
OtworzPlik>>slowo;
ilosc_charow = ilosc_charow + strlen(slowo) + 1;
}
x++;
cout<<ilosc_charow<<endl;
OtworzPlik.seekp(ilosc_charow, ios::beg);
OtworzPlik<<wyraz;
}
while(!OtworzPlik.eof());
return 0;
}
Prosiłbym o pomoc/wytłumaczenie błędów.