Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Usuwanie wybranego tekstu z pliku *.txt

Ostatnio zmodyfikowano 2016-03-16 16:14
Autor Wiadomość
DinapeZ
Temat założony przez niniejszego użytkownika
[C++] Usuwanie wybranego tekstu z pliku *.txt
» 2016-03-15 14:13:18
Witam, jest to mój pierwszy post na tym forum i jeżeli napisałem go w złym miejscu to proszę o przeniesienie
W jaki sposób mógłbym usunąć wybraną daną linijkę z tekstem w pliku .txt?

Daje przykład:

tytuly.txt:
[
tytul1
tytul2
tytul3
tytul4
tytul5
]

Jaki musiałby być kod aby usunąć np. "tytul3" z pliku tytuly.txt?
Zaczynam dopiero przygodę z c++ i prosiłbym o proste wytłumaczenie :-)
Pozdrawiam
P-146030
Harion
» 2016-03-15 15:24:27
Sam należę do początkujących ale z tego co wiem np. jeśl plik ma 200 linii, a chcesz skasować linijke nr 100, lub linie w któej jest tekst "tytul3"
to musisz całość odczytać i ponownie zapisać tylko już bez tej linii.

Np ładujesz całość tekstu do tablicy za pomocą getline, a następnie dany wiersz tablicy zerujesz jeśli jest w nim to co chciałeś skasować,
później przy zapisie daj warunek, że jeśli dany wiersz tablicy == 0 to go poprostu pomijamy i zapisujemy do pliku kolejny wiersz.

Taki mój pomysł ale mogę się mylić, jak nadal nie wiesz o czym mówię to powiedz, a napisze przykładowy kod.
P-146032
DinapeZ
Temat założony przez niniejszego użytkownika
» 2016-03-15 16:20:15
Bardzo dziękuje za szybką odpowiedź :)
Jeżeli byłaby taka możliwość to bardzo proszę o przykładowy kod, bo teoretycznie rozumiem o co chodzi, lecz praktycznie mi to nie wychodzi :/
Pozdrawiam
P-146035
Harion
» 2016-03-15 17:08:36
Oto kod: http://wklej.to/2T2Db
Screen przed otwarciem programu: http://scr.hu/58om/63dwj
Screen po otwarciu programu: http://scr.hu/58om/ljcuh

Jesli masz pytania pytaj, a jeśli ktoś ma lepszy sposób na zrobienie tego co ja zrobiłem też niech powie co jest nie tak :D
P-146044
DinapeZ
Temat założony przez niniejszego użytkownika
» 2016-03-15 17:48:51
Dziękuje wszystko działa jak należy :))
Mam tylko pytanie, czy wiesz jak zrobić, gdy plik "tytuly.txt" stanie się pusty to, żeby go usuwało?

Mam jeszcze jeden problem, zamieszczę go w tym samym temacie;
Zastosowałem znaleziony w internecie schemat do odczytu całego pliku .txt, tylko jest mały problem, bo gdy w pliku znajdują się np.:

Tekst1
Tekst2
Tekst3

To "Tekst3" w programie jest wyświetlany podwójnie:

Tekst1
Tekst2
Tekst3
Tekst3
Tutaj kod:
C/C++
FILE * tytuly = fopen( "tytuly_ksiazek.txt", "r" );
if( tytuly != NULL )
{
    strcpy( dlugosc, "\n" );
    while( !feof( tytuly ) )
    {
        fgets( dlugosc, sizeof( dlugosc ), tytuly );
        cout << dlugosc;
    }
    cout << endl;
    cout << "==========================================" << endl << endl;
    //
    cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl;
    cout << "Co chcesz zrobic?" << endl;
    cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl;
    cout << "1. Wybrac ksiazke" << endl;
    cout << "2. Usunac ksiazke" << endl;
    cout << "3. Wrocic do menu" << endl;
    cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl;
    cout << "[+] Wybierz: ";
    wybor = getch();
    system( "cls" );
   
    switch( wybor )
    {
    case '1':
        {
            goto WWWYSZUKIWANIE;
        }
        break;
    case '2':
        {
            goto USUWWWANIE;
        }
        break;
    case '3':
        {
            goto MENU;
        }
    }
}
Umiał Byś może skorygować błąd w kodzie lub jakoś go przerobić?

Pozdrawiam :)

P-146049
carlosmay
» 2016-03-15 17:57:30
Niewłaściwe rozwiązane wczytywanie.
EOF ustawia się gdy próbujemy odczytać z końca pliku. Wtedy zmienna, do której wczytuje się tekst nie jest nadpisana i ponownie wyświetlona.
Wczytywanie z pliku zamieszczaj w warunku pętli i będzie działać poprawnie.

Edit: Kod w znaczniki i na forum.
P-146052
DinapeZ
Temat założony przez niniejszego użytkownika
» 2016-03-15 20:32:17
Aaa okej :D
Dziękuje za odpowiedź :)

Przepraszam, że zadaje takie głupie pytania (tydzień dopiero siedzę w C++), ale jak dokładnie ma to wyglądać po przeróbce?
MógłByś skorygować to w podanym przeze mnie kodzie, abym wiedział już na przyszłość jak to robić?
Pozdrawiam :)
P-146072
carlosmay
» 2016-03-15 20:59:28
C/C++
while( std::getline( plik, zmienna ) {
    // obsluga zmiennej
}
Tak po krótce.

Umiał Byś może skorygować błąd w kodzie lub jakoś go przerobić?
To jest C z 'cout'em. Czy rozumiesz tekst wklejonego kodu?

I to
goto
. Jakby nie można było tam wywołać funkcji.
P-146073
« 1 » 2
  Strona 1 z 2 Następna strona