Programowanie proceduralne
Ćwiczenie 6
Operacje na plikach
Łukasz Sztangret
Katedra Informatyki Stosowanej i Modelowania
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;
}
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;
}
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;
}
Zadanie 1
Napisać program odczytujący z pliku liczbę
oraz macierz i zapisujący do innego pliku
macierz przemnożoną przez liczbę.
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;
}
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;
}
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;
}
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;
}
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;
}
Zadanie 2
Napisać program odczytujący z pliku tekst i
zapisujący do innego pliku liczbę znaków,
liczbę wystąpień poszczególnych liter.
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;
}
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;
}
Odczyt tekstu
W poprzednim programie instrukcję:
plik.getline(tekst, sizeof(tekst));
zastąpić instrukcją:
plik.getline(tekst, sizeof(tekst),'.');