Wczytanie kokretnej lini podanej przez usera

Odpowiedz Nowy wątek
2006-12-10 17:50
0

Witam!

Mam problem. Musze napisać program w c++ w borlandzie który bedzie edytował plik. Problem w tym że mają być edytowane 2 konkretne linie które podaje użytkownik. Czyli jak plik ma 10lini i użytkownik chce edytować 5linie to zmienia mu sie tylko 5linia a reszta pozostaje bez zmian.

Jak mam to zrobić. Męcze się z tym już od dobrych kilku godzin a potrzebuje to na dzisiaj na 19;/

Pozostało 580 znaków

2006-12-10 18:19
0

Pliki tekstowe mają swoje zalety i wady. Zaletą jest to, że można je edytować "ręczie". Wadą jest to, że są o dostępie sekwencyjnym, czyli aby odczytać wiersz [5], trzeba odczytać wiersze [1..4]. Problem ten możesz obejść na dwa sposoby:

1). User podaje wiersz do edycji: np. 5. Musisz więc odczytać wiersze [1..4] i zapisać do pliku tymczasowego, odczytać wiersz [5] i nie zapisywać go nigdzie,, poprosic usera o wprowadzenie wiersza nr 5, zapisać ten wiersz do pliku temp, i znowu w pętli czytać wiersze od [6..EOF] i zapisywać je do pliku temp. Na końcu zmienić nazwę pliku temp na plik źródłowy.

2). Opcja łatwiejsza (ale dla niezadużych plików). Wczytać plik do klasy TStringList za pomoca LoadFromFile, dokonać modyfikcaji wiersza [5], zapisać plik za pomocą SaveToFile.


<span style="color: blue">"Kolarstwo to jedna z najtrudniejszych dyscyplin sportu. Nawet najgorszy kolarz jest wciąż wybitnym sportowcem."
s.p. Marco Pantani
</span>

Pozostało 580 znaków

2006-12-10 19:55
0
#include <iostream>
#include <string>
#include <fstream>
using namespace std;

int main(int argc, char* argv[])
{
   fstream plik(argv[1]);
   string linia;
   int numer = atoi(argv[2]);
   while(!plik.eof())
   {
      getline(plik, linia);
      if(--numer == 0)
      {
         cout << linia;
         return 0;
      }
   }
   cout << "Brak tylu linii";
    return 0;
}

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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