30/09/2018, 16:27
Cách nhập xuất file Sinh Viên có nhiều sinh viên?
Như tiêu đề em đã đề cập, đầu tiên em viết code đọc được file nhập được 1 sinh viên, sau đó em dùng vòng lặp for để đọc toàn bộ sinh viên nhưng nó lặp lại chỉ đọc được 1 Sinh viên đầu tiên.
Đây là code
#include<stdio.h>
#include<conio.h>
#include<iostream>
#include <stdlib.h>
using namespace std;
FILE *f;
typedef struct MH{
char maMH[15];
char tenMH[50];
int soTC;
float diem;
};
typedef struct SV
{
char MSSV[15];
char hoten[50];
int tuoi;
int somonhoc;
MH m[100];
};
void docfile(char *filename, SV &a);
void inSV(SV a);
void XuatThongTinHM(SV a);
void docfile(char *filename, SV &a)
{
char temp[100];
f = fopen(filename, "rt");
fgets(temp, 2, f);
fgets(temp, 10, f);
fgets(a.MSSV, 15, f);
a.MSSV[strlen(a.MSSV) - 1] = 0;
fgets(a.hoten, 50, f);
a.hoten[strlen(a.hoten) - 1] = 0;
fscanf(f, "%d", &a.tuoi);
fscanf(f, "%d", &a.somonhoc);
for (int i = 0; i < a.somonhoc; i++)
{
fgets(temp, 2, f);
fgets(a.m[i].maMH, 10, f);
a.m[i].maMH[strlen(a.m[i].maMH) - 1] = 0;
fgets(a.m[i].tenMH, 50, f);
a.m[i].tenMH[strlen(a.m[i].tenMH) - 1] = 0;
fscanf(f, "%d", &a.m[i].soTC);
fscanf(f, "%f", &a.m[i].diem);
}
fclose(f);
}
void inSV(SV a)
{
cout << a.MSSV << endl;
cout << a.hoten << endl;
cout << a.tuoi << endl;
cout << a.somonhoc << endl;
for (int i = 0; i < a.somonhoc; i++)
{
cout << a.m[i].maMH << endl;
cout << a.m[i].tenMH << endl;
cout << a.m[i].soTC << endl;
cout << a.m[i].diem << endl;
}
}
int main()
{
f = fopen("C:/INMANGSINHVIEN.TXT", "rt");
int n;
fscanf(f, "%d", &n);
SV *a = new SV[n];
for (int i = 0; i < n; i++)
{
docfile("C:/INMANGSINHVIEN.TXT", a[i]);
}
fclose(f);
for (int i = 0; i < n; i++)
{
inSV (a[i]);
}
delete[] a;
getch();
}
Còn đây là file TXT
3
10910015
Tran Van Tu
22
3
INPR123
Nhap mon Lap trinh
4
3.5
PRTE234
Ky thua Lap trinh
4
8.0
PRTE345
Cau truc may tinh
4
2.8
10910021
Nguyen Tu Huan
22
2
1011010
Toan cao cap A1
4
4.5
1011011
Toan cao cap A2
4
5.0
10910013
Tran Ngoc Trung
22
3
112233
Cau truc du lieu
4
6.5
445566
Tin hoc dai cuong
4
5.5
778899
Toan roi rac
4
7.5
Mọi người có thể đọc chỉ ra giúp em lỗi khi sử dụng vòng lặp ? Em mới học nên còn nhiều kiến thức chưa năm chắc được.
Bài liên quan
Code của em sai ở rất nhiều chỗ, nên anh thây tốt nhất là sửa lại toàn bộ. Ở đây anh có sử dụng một hàm readline anh viết hướng dẫn ở đây
Cách này có thể là không hay lắm, nhưng nó đảm bảo đọc được dữ liệu.
em sẽ đọc lại code và nghiên cứu thêm, cảm ơn anh