Website Summary Files Commits Branches @commit @diff @stats
path: root / Sem. 03 / students_dynamicName_to_binary.cpp
diff options
context:
space:
mode:
1 files changed, 64 insertions, 64 deletions
-rw-r--r--Sem. 03/students_dynamicName_to_binary.cpp128
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();
+ }
}