background image

Programowanie proceduralne

Ćwiczenie 6

Operacje na plikach

Łukasz Sztangret
Katedra Informatyki Stosowanej i Modelowania 

background image

Odczyt wektora z pliku

#include<iostream>
#include<fstream>
using namespace std;

int main()
{

int n;
ifstream plik;

Przykładowa zawartość pliku
„wektor.txt”:

5 1 2 3 4 5

ifstream plik;
plik.open("wektor.txt");
plik >> n;
int *tab=new int[n];
for (int i=0; i<n; i++)

plik >> tab[i];

for (int i=0; i<n; i++)

cout << tab[i] << "\t";

cout << endl;
plik.close();
system("pause");
return 0;

}

background image

Sprawdzenie

#include<iostream>
#include<fstream>
using namespace std;

int main()
{

int n;
ifstream plik;
plik.open("dane.txt");
if (plik)

cout << "Plik zostal otwarty\n";

else

cout << "Plik nie zostal otwarty\n";   

plik.close();
system("pause");
return 0;

}

background image

Zapis wektora do pliku

#include<iostream>
#include<fstream>
using namespace std;

int main()
{

int tab[5]={1, 2, 3, 4, 5};

Zawartość pliku „wektor.txt”:

5 1 2 3 4 5 

int tab[5]={1, 2, 3, 4, 5};
int n=5;
ofstream plik;
plik.open("wektor.txt");
plik << n << " ";
for (int i=0; i<n; i++)

plik << tab[i] << " ";

plik.close();
return 0;

}

background image

Zadanie 1

Napisać program odczytujący z pliku liczbę
oraz macierz i zapisujący do innego pliku
macierz przemnoŜoną przez liczbę.

background image

Odczyt tekstu z pliku

#include<iostream>
#include<fstream>
using namespace std;

int main()
{

{

char tekst[100];
ifstream plik;
plik.open("napis.txt");
plik.read(tekst, sizeof(tekst)); // plik >> tekst;
cout << tekst << endl;
plik.close();
system("pause");
return 0;

}

background image

Odczyt z pliku

#include<iostream>
#include<fstream>
using namespace std;

int main()
{

char tekst[100];
ifstream plik;
plik.open("napis.txt");
plik.seekg(1);
plik >> tekst;
cout << tekst << endl;
plik.close();
system("pause");
return 0;

}

background image

Ilość znaków w pliku

#include<iostream>
#include<fstream>
using namespace std;

int main()
{

{

ifstream plik;
plik.open("napis.txt");
plik.seekg(0,ios::end);
cout << plik.tellg() << endl;
plik.close();
system("pause");
return 0;

}

background image

Zapis tekstu do pliku

#include<iostream>
#include<fstream>
using namespace std;

int main()

int main()
{

char tekst[]={"Jakis tekst"};
ofstream plik;
plik.open("napis.txt");
plik.write(tekst, sizeof(tekst)); // plik << tekst;
plik.close();
return 0;

}

background image

Zapis do pliku

#include<iostream>
#include<fstream>
using namespace std;

int main()
{

{

char tekst[]={"Jakis tekst"};
ofstream plik;
plik.open("napis.txt");
plik << tekst;
plik.seekp(0,ios::end);
plik << "AAA";
plik.close();
return 0;

}

background image

Zadanie 2

Napisać program odczytujący z pliku tekst i
zapisujący do innego pliku liczbę znaków,
liczbę wystąpień poszczególnych liter.

background image

Odczyt tekstu znak po znaku

#include<iostream>
#include<fstream>
using namespace std;

int main()
{

char litera;
ifstream plik;

ifstream plik;
plik.open("napis.txt");
for(;;){

plik.get(litera);
if(plik.eof())

break;

cout << litera << '-';}

cout << endl;
plik.close();
system("pause");
return 0;

}

background image

Odczyt tekstu linia po linii

#include<iostream>
#include<fstream>
using namespace std;

int main()
{

char tekst[100];
ifstream plik;

ifstream plik;
plik.open("napis.txt");
for(;;){

plik.getline(tekst, sizeof(tekst));
if (plik.eof())

break;

cout << tekst << " - koniec linii\n";}

cout << endl;
plik.close();
system("pause");
return 0;

}

background image

Odczyt tekstu

W poprzednim programie instrukcję:

plik.getline(tekst, sizeof(tekst));

zastąpić instrukcją:

plik.getline(tekst, sizeof(tekst),'.');