Sunteți pe pagina 1din 5

1.

S se scrie un program care folosete funcia seekg() pentru poziionare la mijlocul


fiierului
si apoi afieaz coninutul fiierului ncepnd cu aceast poziie. Numele fiierului se cites
din linia de comand.
#include<iostream>
#include<fstream>
#include<stdlib.h>
using namespace std;
void main(int argc,char *argv[])
{
if(argc==1)
{
cout<<"Nu sa primit numele fisierului prin linia de comanda"<<en
dl;
exit(1);
}
ifstream fin;
fin.open(argv[1],ios::in);
if(fin.fail())
{
cout<<"Eroare la deschiderea fisierului!"<<endl;
exit(1);
}
fin.seekg(0,ios::end);
fin.seekg(fin.tellg()/2,ios::beg);
char buff[2]="";
while(!fin.eof())
{
cout<<buff;
fin.read(buff,1);
}
cout<<endl;
fin.close();
}
2. Scriei un program care utilizeaz funcia write() pentru a scrie ntr-un fiier iruri d
e
caractere. Afiai apoi coninutul fiierului folosind funcia get(). Numele fiierului se v
a citi
de la tastatur.
#include<iostream>
#include<fstream>
#include<stdlib.h>
using namespace std;
void main(void)
{
char calea[20];
cout<<"Introduceti calea fisierului: ";cin>>calea;
fstream io;
io.open(calea,ios::in|ios::out);
char buff[256]="\n";
cout<<"Introduceti sirurile... pentru a incheia introduceti pe un rand n
ou \"e\": "<<endl;
bool flag=false;
while(1)
{
cin.getline(buff,256,'\n');
if(!(toupper(buff[0])=='E'&&buff[1]=='\0'))
{
io.write(buff,strlen(buff));
if(flag==true)
{
io.put('\n');
}
else
io.seekp(0,ios::beg);
}
else
break;
flag=true;
}
io.seekg(0,ios::beg);
char buff1=0;
cout<<"Continutul fisierului este: "<<endl;
while(1)
{
io.get(buff1);
if(!io.eof())
cout<<buff1;
else
break;
}
io.close();
}
3. Scriei o aplicaie C++ care citete un fiier utiliznd funcia read(). Verificai starea
sistemului dup fiecare operaie de citire. Numele fiierului se va citi din linia de
comand.
Afiai pe ecran coninutul fiierului.
#include<iostream>
#include<fstream>
#include<stdlib.h>
using namespace std;
void main(int argc,char *argv[])
{
if(argc==1)
{
cout<<"Nu sa trimis numele fisierului in linia de comanda!"<<end
l;
exit(1);
}
ifstream file;
file.open(argv[1],ios::in);
file.seekg(0,ios::end);
char *stream=new char[(int)file.tellg()+1];
stream[0]='\0';
file.seekg(0,ios::beg);
if(file.fail())
{
cout<<"eroare la deschiderea fisierului!"<<endl;
exit(1);
}
char buff[2]="";
while(1)
{
file.read(buff,1);
cout<<"starea: "<<file.failbit<<endl;
if(!file.eof())
{
strcat(stream,buff);
}
else
break;
}
cout<<stream;
file.close();
}
4. Scrieti o aplicatie C++ in care deschideti un fisier in mod binar pentru citi
re. Afisati un mesaj
corespunzator daca fisierul nu a fost creat in prealabil si cereti reintroducere
a numelui
fisierului. Presupunand ca in fisierul deschis exista inregistrari de tip agenda
(nume, localitate,
numar de telefon), utilizati supraincarcarea operatorilor de insertie si extract
ie pentru afisarea
pe ecran a continutului fisierului.
#include<iostream>
#include<fstream>
using namespace std;
class Persoana
{
char nume[256];
char localitate[256];
char telefon[11];
public:
friend ifstream& operator>> (ifstream &file,Persoana &pers);
friend istream& operator>> (istream &stream,Persoana &pers);
friend ostream& operator<< (ostream &stream,Persoana &pers);
friend ofstream& operator<< (ofstream &file,Persoana &pers);
static int count;
};
int Persoana::count=0;
ifstream& operator>> (ifstream &file,Persoana &pers)
{
file>>pers.nume>>pers.localitate>>pers.telefon;
return file;
}
istream& operator>> (istream &stream,Persoana &pers)
{
bool flag=false;
char tmp[256];
cout<<"Nume: ";stream>>pers.nume;
cout<<"Localitatea: ";stream>>pers.localitate;
do
{
if(flag) cout<<"Numarul de telefon introdus nu contine 10 cifre.
. introduceti numarul de telefon cu tot cu prefix"<<endl;
cout<<"Numar de telefon: ";stream>>tmp;
flag=true;
}
while(strlen(tmp)!=10);
strcpy(pers.telefon,tmp);
return stream;
}
ostream& operator<< (ostream &stream,Persoana &pers)
{
stream<<"Nume: "<<pers.nume<<endl;
stream<<"Localitate: "<<pers.localitate<<endl;
stream<<"Numar de Telefon: "<<pers.telefon<<endl;
return stream;
}
ofstream& operator<< (ofstream &file,Persoana &pers)
{
file<<pers.nume<<" "<<pers.localitate<<" "<<pers.telefon<<" ";
return file;
}
void main(void)
{
char calea[20];
bool flag=false;
int read,n;
Persoana p;
ifstream fin;
cout<<"Doriti scrierea unui fisier?(tastati 1 pentru DA si orice alt num
ar intreg pentru NU: ";cin>>read;
if(read==1)
{
ofstream fout;
cout<<"Introduceti calea pentru salvarea fisierului binar: ";cin
>>calea;
fout.open(calea,ios::out|ios::binary);
cout<<"Introduceti cate elemente doriti sa aveti in sir: ";cin>>
n;
for(int i=0;i<n;i++)
{
cout<<"Introduceti datele pentru persoana nr."<<i+1<<" :
"<<endl;
cin>>p;
fout<<p;
}
fout.close();
}
do
{
if(flag)
{
cout<<"Fisierul nu exista! Va rugam incercati dinou:"<<e
ndl;
fin.close();
}
cout<<"Introduceti calea fisierului de unde doriti citirea: ";ci
n>>calea;
fin.open(calea,ios::in|ios::binary);
flag=true;
}
while(fin.fail());
while(1)
{
fin>>p;
if(fin.eof())
break;
else
{
cout<<"Persoana nr."<<++p.count<<":"<<endl;
cout<<p;
}
}
fin.close();
}

S-ar putea să vă placă și