 |
| Autor |
Mesaj |
Zappu
Administrator


Data inscrierii: 10/Noi/2007 Mesaje: 718 Localitate: Cluj |
|
lab 13 |
|
1. Sã se scrie un program care foloseºte funcþia seekg() pentru poziþionare la mijlocul fiºierului
si apoi afiºeazã conþinutul fiºierului începând cu aceastã poziþie. Numele fiºierului se citeste
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"<<endl;
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. Scrieþi un program care utilizeazã funcþia write() pentru a scrie într-un fiºier ºiruri de
caractere. Afiºaþi apoi conþinutul fiºierului folosind funcþia get(). Numele fiºierului se va 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 nou \"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. Scrieþi o aplicaþie C++ care citeºte un fiºier utilizând funcþia read(). Verificaþi starea
sistemului dupã fiecare operaþie de citire. Numele fiºierului se va citi din linia de comandã.
Afiºaþi pe ecran conþinutul fiºierului.
#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!"<<endl;
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 citire. Afisati un mesaj
corespunzator daca fisierul nu a fost creat in prealabil si cereti reintroducerea numelui
fisierului. Presupunand ca in fisierul deschis exista inregistrari de tip agenda (nume, localitate,
numar de telefon), utilizati supraincarcarea operatorilor de insertie si extractie 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 numar 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:"<<endl;
fin.close();
}
cout<<"Introduceti calea fisierului de unde doriti citirea: ";cin>>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();
}
_________________ Detinator MiniZone
www.zappdivercity.blogspot.com |
|
| 27/05/2014 23:29 |
|
 |
|
|
Nu puteti crea un subiect nou in acest forum Nu puteti raspunde in subiectele acestui forum Nu puteti modifica mesajele proprii din acest forum Nu puteti sterge mesajele proprii din acest forum Nu puteti vota in chestionarele din acest forum
|
Powered by phpBB © 2001, 2005 phpBB Group Fa-ti si tu propriul forum GRATUIT, pe www.myforum.ro
|
|
 |