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 |
|
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. |
|
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 |
|
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 |
|
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.: To "Tekst3" w programie jest wyświetlany podwójnie: Tekst1 Tekst2 Tekst3 Tekst3
Tutaj kod: 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 :) |
|
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. |
|
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 :) |
|
carlosmay |
» 2016-03-15 20:59:28 while( std::getline( plik, zmienna ) { } 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. |
|
« 1 » 2 |