Edytor plików tekstowych

0

Witam,

nie mam zbyt dużego doświadczenia w kwestii programowania, a muszę napisać prosty edytor tekstowy w języku c. Pierwszy raz mam styczność z operacjami na plikach, dlatego ciężko jest mi to zrealizować.

Generalnie program powinien umożliwić dodawanie wierszy we wskazanej pozycji, usuwanie wierszy oraz ich sortowanie. Sterowanie ma się odbywać za pomocą argumentu wywołania, np ./edytor usun 3 plik.txt (jak widać wszystko w środowisku unix).

Umiem wypisać treść pliku na konsole, jednak szczerze mówiąc nie mam pomysłu na "nawigację" w samym pliku. Jak określić wiersz w którym działać itp.

Z góry dzięki za sugestie :)

0

Nie da się. Musisz przejrzeć cały plik. http://www.cplusplus.com/reference/clibrary/cstdio/fgets/

0

Chyba mnie nie zrozumiałeś. To nie musi być edycja w czasie rzeczywistym. Po prostu po wpisaniu uruchomienia programu wraz z komendą, ma się wyświetlić już zmodyfikowany plik tekstowy. Np bez któregoś wiersza.

0

Dokładnie. żeby wyświetlić plik bez którejś linijki, musisz wiedzieć, gdzie się ona zaczyna. Wczytujesz pierwszy wiersz i zapisujesz, drugi i zapisujesz, trzeci tylko wczytujesz, ale bez zapisywania, kolejne znowu wczytujesz i zapisujesz.

0

Więc powinienem zrobić tyle tablic ile wierszy w pliku? I dodatkowo jakoś dynamicznie zmieniać ich liczbę w zależności od pliku? I w zasadzie główny dla mnie problem, skąd program ma wiedzieć że jest już w 3 wierszu?

0

Nie wiem czy dobrze rozumiem Twoje zadanie, ale zakładając, że brzmi ono tak:
usuń n-ty wiersz z pliku. To może to zrobić na takiej zasadzie, że jednego pliku przepisujesz wszystkie wiersze oprócz tego n-tego do drugiego pliku. Nie potrzebujesz na to tablicy, bo robisz to na zasadzie, pobierz wiersz z jednego, zapisz go w drugi i robisz to do końca pierwszego pliku.
Wiersze wczytujesz za pomocą podanej wyżej funkcji. Za każdym wczytaniem wiersza zwiększasz licznik odczytanych wierszy żeby wiedzieć, w którym momencie wczytujesz n-ty wiersz.

0

Tyle że potrzebuje w takim wypadku drugiego pliku tak? Czy pobieram z pierwszego do pamięci, kasuję go a potem tworze nowy o tej samej nazwie z odpowiednio wpisanymi danymi?

0

Tak. Najlepszą opcją będzie drugi plik.

1 użytkowników online, w tym zalogowanych: 0, gości: 1