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(); }