diff options
1 files changed, 64 insertions, 64 deletions
| -rw-r--r-- | Sem. 03/students_dynamicName_to_binary.cpp | 128 |
diff --git a/Sem. 03/students_dynamicName_to_binary.cpp b/Sem. 03/students_dynamicName_to_binary.cpp index 33953d3..4eeb8aa 100644 --- a/Sem. 03/students_dynamicName_to_binary.cpp +++ b/Sem. 03/students_dynamicName_to_binary.cpp @@ -6,109 +6,109 @@ using namespace std; struct Student { - char* name; - int fn; - int gradesCount; - double averageGrade; + char* name; + int fn; + int gradesCount; + double averageGrade; }; void print(const Student& st) { - cout << st.name << " " << st.fn << " " << st.gradesCount << " " << st.averageGrade << endl; + cout << st.name << " " << st.fn << " " << st.gradesCount << " " << st.averageGrade << endl; } Student createStudent(const char* name, int fn, int gradesCount, double avGrade) { - Student obj; + Student obj; - size_t nameLen = strlen(name); + size_t nameLen = strlen(name); - obj.name = new char[nameLen + 1]; - strcpy(obj.name, name); + obj.name = new char[nameLen + 1]; + strcpy(obj.name, name); - obj.fn = fn; - obj.gradesCount = gradesCount; - obj.averageGrade = avGrade; + obj.fn = fn; + obj.gradesCount = gradesCount; + obj.averageGrade = avGrade; - return obj; + return obj; } void saveStudentToFile(ofstream& f, const Student& st) { - size_t nameLen = strlen(st.name); - - f.write((const char*)&nameLen, sizeof(nameLen)); //first we write the size of the name! - f.write(st.name, nameLen); - - f.write((const char*)&st.fn, sizeof(st.fn)); - f.write((const char*)&st.gradesCount, sizeof(st.gradesCount)); - f.write((const char*)&st.averageGrade, sizeof(st.averageGrade)); + size_t nameLen = strlen(st.name); + + f.write((const char*)&nameLen, sizeof(nameLen)); //first we write the size of the name! + f.write(st.name, nameLen); + + f.write((const char*)&st.fn, sizeof(st.fn)); + f.write((const char*)&st.gradesCount, sizeof(st.gradesCount)); + f.write((const char*)&st.averageGrade, sizeof(st.averageGrade)); } Student readStudentFromFile(ifstream& f) { - Student res; + Student res; - size_t nameLen; + size_t nameLen; - f.read((char *)&nameLen, sizeof(nameLen)); //first we read the size of the name! + f.read((char*)&nameLen, sizeof(nameLen)); //first we read the size of the name! - res.name = new char[nameLen + 1]; - f.read(res.name, nameLen); - res.name[nameLen] = '\0'; + res.name = new char[nameLen + 1]; + f.read(res.name, nameLen); + res.name[nameLen] = '\0'; - f.read((char *)&res.fn, sizeof(res.fn)); - f.read((char*)&res.gradesCount, sizeof(res.gradesCount)); - f.read((char*)&res.averageGrade, sizeof(res.averageGrade)); + f.read((char*)&res.fn, sizeof(res.fn)); + f.read((char*)&res.gradesCount, sizeof(res.gradesCount)); + f.read((char*)&res.averageGrade, sizeof(res.averageGrade)); - return res; + return res; } void freeStudent(Student& s) { - delete[] s.name; + delete[] s.name; - s.averageGrade = s.fn = s.gradesCount = 0; + s.averageGrade = s.fn = s.gradesCount = 0; } int main() { - { //save students to file - Student s1 = createStudent("Ivan", 1234, 2, 4); - Student s2 = createStudent("Petur", 5555, 5, 5.5); + { //save students to file + Student s1 = createStudent("Ivan", 1234, 2, 4); + Student s2 = createStudent("Petur", 5555, 5, 5.5); + + ofstream f1("uni.dat", ios::binary); - ofstream f1("uni.dat", ios::binary); + if (!f1.is_open()) + { + cout << "Error" << endl; + return -1; + } - if (!f1.is_open()) - { - cout << "Error" << endl; - return -1; - } + saveStudentToFile(f1, s1); + saveStudentToFile(f1, s2); - saveStudentToFile(f1, s1); - saveStudentToFile(f1, s2); - - freeStudent(s1); - freeStudent(s2); + freeStudent(s1); + freeStudent(s2); - f1.close(); - } + f1.close(); + } - { //read students from file - ifstream f2("uni.dat", ios::binary); + { //read students from file + ifstream f2("uni.dat", ios::binary); - if (!f2.is_open()) - { - cout << "Error" << endl; - return -1; - } - Student s1 = readStudentFromFile(f2); - Student s2 = readStudentFromFile(f2); + if (!f2.is_open()) + { + cout << "Error" << endl; + return -1; + } + Student s1 = readStudentFromFile(f2); + Student s2 = readStudentFromFile(f2); - print(s1); - print(s2); + print(s1); + print(s2); - freeStudent(s1); - freeStudent(s2); + freeStudent(s1); + freeStudent(s2); - f2.close(); - } + f2.close(); + } } |
