#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
#define SIZE 50
char record[SIZE];
class Student{
private:
char id[10];
char name[20];
char address[20];
public:
void setData(){
cout << "enter your id:" << endl;
cin >> id;
cout << "enter your name:" << endl;
cin >> name;
cout << "enter your address:" << endl;
cin >> address;
}
void printData(){
cout << "id: " << id << " name: " << name << " address: " << address << endl;
}
void pack(){
strcpy(record, id);
strcat(record, "|");
strcat(record, name);
strcat(record, "|");
strcat(record, address);
while(strlen(record) <= SIZE -1){
strcat(record, "#");
}
strcat(record, "\n");
}
void unpack(){
char* p;
p=strtok(record,"|");
strcpy(id,p);
p=strtok(NULL,"|");
strcpy(name,p);
p=strtok(NULL,"#");
strcpy(address,p);
}
void insert(){
fstream file;
file.open("student.txt", ios::out | ios::app);
file << record;
file.close();
}
void display(){
fstream file;
file.open("student.txt", ios::in);
while(file.getline(record, SIZE+1, '\n')){
unpack();
printData();
}
file.close();
}
void search(char* key){
ifstream Infile("student.txt");
while(Infile.getline(record, SIZE+1, '\n')){
unpack();
if(strcmp(key, id) == 0){
printData();
}
}
Infile.close();
}
void deleteD(char *key){
fstream in_file;
fstream out_file;
in_file.open("student.txt",ios::in);
out_file.open("temp.txt",ios::out);
while(!in_file.eof()){
in_file.getline(record,SIZE+1,'\n');
if(in_file.fail()) break;
unpack();
if(strcmp(key,id)==0){
continue;
}
pack();
out_file<<record;
}
in_file.close();
out_file.close();
remove("student.txt");
rename("temp.txt","student.txt");
}
void update(char *key){
fstream in_file;
fstream out_file;
in_file.open("student.txt",ios::in);
out_file.open("temp.txt",ios::out);
while(!in_file.eof()){
in_file.getline(record,SIZE+1,'\n');
if(in_file.fail()) break;
unpack();
if(strcmp(key,id)==0){
setData();
}
pack();
out_file<<record;
}
in_file.close();
out_file.close();
remove("student.txt");
rename("temp.txt","student.txt");
}
};
int main()
{
Student obj;
//st.setData();
//st.pack();
//st.insert();
//st.unpack();
//st.printData();
//st.display();
//st.search();
//st.update("56565");
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnN0cmVhbT4KI2luY2x1ZGUgPGNzdHJpbmc+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBTSVpFIDUwCmNoYXIgcmVjb3JkW1NJWkVdOwoKY2xhc3MgU3R1ZGVudHsKcHJpdmF0ZToKICAgIGNoYXIgaWRbMTBdOwogICAgY2hhciBuYW1lWzIwXTsKICAgIGNoYXIgYWRkcmVzc1syMF07CgpwdWJsaWM6CiAgICB2b2lkIHNldERhdGEoKXsKICAgICAgICBjb3V0IDw8ICJlbnRlciB5b3VyIGlkOiIgPDwgZW5kbDsKICAgICAgICBjaW4gPj4gaWQ7CiAgICAgICAgY291dCA8PCAiZW50ZXIgeW91ciBuYW1lOiIgPDwgZW5kbDsKICAgICAgICBjaW4gPj4gbmFtZTsKICAgICAgICBjb3V0IDw8ICJlbnRlciB5b3VyIGFkZHJlc3M6IiA8PCBlbmRsOwogICAgICAgIGNpbiA+PiBhZGRyZXNzOwogICAgfQoKICAgIHZvaWQgcHJpbnREYXRhKCl7CiAgICAgICAgY291dCA8PCAiaWQ6ICIgPDwgaWQgPDwgIiBuYW1lOiAiIDw8IG5hbWUgPDwgIiBhZGRyZXNzOiAiIDw8IGFkZHJlc3MgPDwgZW5kbDsKICAgIH0KCiAgICB2b2lkIHBhY2soKXsKICAgICAgICBzdHJjcHkocmVjb3JkLCBpZCk7CiAgICAgICAgc3RyY2F0KHJlY29yZCwgInwiKTsKICAgICAgICBzdHJjYXQocmVjb3JkLCBuYW1lKTsKICAgICAgICBzdHJjYXQocmVjb3JkLCAifCIpOwogICAgICAgIHN0cmNhdChyZWNvcmQsIGFkZHJlc3MpOwogICAgICAgIHdoaWxlKHN0cmxlbihyZWNvcmQpIDw9IFNJWkUgLTEpewogICAgICAgICAgICBzdHJjYXQocmVjb3JkLCAiIyIpOwogICAgICAgIH0KICAgICAgICBzdHJjYXQocmVjb3JkLCAiXG4iKTsKICAgIH0KCiAgICB2b2lkIHVucGFjaygpewogICAgICBjaGFyKiBwOwogICAgICBwPXN0cnRvayhyZWNvcmQsInwiKTsKICAgICAgc3RyY3B5KGlkLHApOwogICAgICBwPXN0cnRvayhOVUxMLCJ8Iik7CiAgICAgIHN0cmNweShuYW1lLHApOwogICAgICBwPXN0cnRvayhOVUxMLCIjIik7CiAgICAgIHN0cmNweShhZGRyZXNzLHApOwogICAgfQoKICAgIHZvaWQgaW5zZXJ0KCl7CiAgICAgICAgZnN0cmVhbSBmaWxlOwogICAgICAgIGZpbGUub3Blbigic3R1ZGVudC50eHQiLCBpb3M6Om91dCB8IGlvczo6YXBwKTsKICAgICAgICBmaWxlIDw8IHJlY29yZDsKCiAgICAgICAgZmlsZS5jbG9zZSgpOwogICAgfQoKICAgIHZvaWQgZGlzcGxheSgpewogICAgICAgIGZzdHJlYW0gZmlsZTsKICAgICAgICBmaWxlLm9wZW4oInN0dWRlbnQudHh0IiwgaW9zOjppbik7CiAgICAgICAgd2hpbGUoZmlsZS5nZXRsaW5lKHJlY29yZCwgU0laRSsxLCAnXG4nKSl7CiAgICAgICAgICAgIHVucGFjaygpOwogICAgICAgICAgICBwcmludERhdGEoKTsKICAgICAgICB9CgogICAgICAgIGZpbGUuY2xvc2UoKTsKICAgIH0KICAgIHZvaWQgc2VhcmNoKGNoYXIqIGtleSl7CiAgICAgICAgaWZzdHJlYW0gSW5maWxlKCJzdHVkZW50LnR4dCIpOwogICAgICAgIHdoaWxlKEluZmlsZS5nZXRsaW5lKHJlY29yZCwgU0laRSsxLCAnXG4nKSl7CiAgICAgICAgICAgIHVucGFjaygpOwogICAgICAgICAgICBpZihzdHJjbXAoa2V5LCBpZCkgPT0gMCl7CgogICAgICAgICAgICAgICAgcHJpbnREYXRhKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgICAgIEluZmlsZS5jbG9zZSgpOwogICAgfQoKICAgIHZvaWQgZGVsZXRlRChjaGFyICprZXkpewogICAgICAgIGZzdHJlYW0gaW5fZmlsZTsKICAgICAgICBmc3RyZWFtIG91dF9maWxlOwoKICAgICAgICBpbl9maWxlLm9wZW4oInN0dWRlbnQudHh0Iixpb3M6OmluKTsKICAgICAgICBvdXRfZmlsZS5vcGVuKCJ0ZW1wLnR4dCIsaW9zOjpvdXQpOwoKICAgICAgICB3aGlsZSghaW5fZmlsZS5lb2YoKSl7CiAgICAgICAgICAgIGluX2ZpbGUuZ2V0bGluZShyZWNvcmQsU0laRSsxLCdcbicpOwogICAgICAgICAgICBpZihpbl9maWxlLmZhaWwoKSkgYnJlYWs7CiAgICAgICAgICAgIHVucGFjaygpOwogICAgICAgICAgICBpZihzdHJjbXAoa2V5LGlkKT09MCl7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBwYWNrKCk7CiAgICAgICAgICAgIG91dF9maWxlPDxyZWNvcmQ7CiAgICAgICAgfQogICAgICAgIGluX2ZpbGUuY2xvc2UoKTsKICAgICAgICBvdXRfZmlsZS5jbG9zZSgpOwogICAgICAgIHJlbW92ZSgic3R1ZGVudC50eHQiKTsKICAgICAgICByZW5hbWUoInRlbXAudHh0Iiwic3R1ZGVudC50eHQiKTsKICAgIH0KCiAgICB2b2lkIHVwZGF0ZShjaGFyICprZXkpewogICAgICAgIGZzdHJlYW0gaW5fZmlsZTsKICAgICAgICBmc3RyZWFtIG91dF9maWxlOwoKICAgICAgICBpbl9maWxlLm9wZW4oInN0dWRlbnQudHh0Iixpb3M6OmluKTsKICAgICAgICBvdXRfZmlsZS5vcGVuKCJ0ZW1wLnR4dCIsaW9zOjpvdXQpOwoKICAgICAgICB3aGlsZSghaW5fZmlsZS5lb2YoKSl7CiAgICAgICAgICAgIGluX2ZpbGUuZ2V0bGluZShyZWNvcmQsU0laRSsxLCdcbicpOwogICAgICAgICAgICBpZihpbl9maWxlLmZhaWwoKSkgYnJlYWs7CiAgICAgICAgICAgIHVucGFjaygpOwogICAgICAgICAgICBpZihzdHJjbXAoa2V5LGlkKT09MCl7CiAgICAgICAgICAgICAgICBzZXREYXRhKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcGFjaygpOwogICAgICAgICAgICBvdXRfZmlsZTw8cmVjb3JkOwogICAgICAgIH0KICAgICAgICBpbl9maWxlLmNsb3NlKCk7CiAgICAgICAgb3V0X2ZpbGUuY2xvc2UoKTsKICAgICAgICByZW1vdmUoInN0dWRlbnQudHh0Iik7CiAgICAgICAgcmVuYW1lKCJ0ZW1wLnR4dCIsInN0dWRlbnQudHh0Iik7CiAgICB9Cgp9OwoKCmludCBtYWluKCkKewogICAgU3R1ZGVudCBvYmo7CiAgICAvL3N0LnNldERhdGEoKTsKICAgIC8vc3QucGFjaygpOwogICAgLy9zdC5pbnNlcnQoKTsKICAgIC8vc3QudW5wYWNrKCk7CiAgICAvL3N0LnByaW50RGF0YSgpOwogICAgLy9zdC5kaXNwbGF5KCk7CiAgICAvL3N0LnNlYXJjaCgpOwogICAgLy9zdC51cGRhdGUoIjU2NTY1Iik7CiAgICAKICAgIHJldHVybiAwOwp9CgoKCgoKCgoKCgo=