30/09/2018, 18:19
Lỗi Đọc File C++?
Do trước đây mình bỏ qua phần File nên giờ gặp 1 bài toán khá là bế tắc.Chạy mà lỗi hoài.Khi mình nhập vài SV và xuất Sv ra thì no1 chỉ xuất 1 sv mà còn xuất lỗi nữa.Trong khi nó ghi trong file thì bình thường.Ai chỉ ra lỗi dùm mình với.Mình cảm ơn.
#include <iostream>
#include <conio.h>
#include <string>
#include <stdlib.h>
#include <fstream>
using namespace std;
struct SinhVien
{
string ID;
string FirstName;
string LastName;
double Math;
double Physics;
double English;
double Avg;
};
void NhapSV(SinhVien &sv)
{
cin.ignore();
cout << "Ma so sinh vien : ";
getline(cin,sv.ID);
cout << "Nhap ten : ";
getline(cin,sv.LastName);
cout << "Nhap ho : ";
getline(cin,sv.FirstName);
cout << "Diem toan : ";
cin >> sv.Math;
cout << "Diem ly : ";
cin >> sv.Physics;
cout << "Diem tieng Anh : ";
cin >> sv.English;
}
void NhapDanhSach(SinhVien ds[],int &n)
{
cout << "So luong sinh vien can nhap : ";
cin >> n;
for(int i = 0 ; i < n ; i++)
{
cout << "Nhap thong tin sinh vien thu " << i + 1 << endl;
NhapSV(ds[i]);
}
ofstream input("Sinh Vien.txt",ios::out);
input << n << endl;
for(int i = 0 ; i < n ; i++)
{
input << i + 1 << " " << ds[i].ID << " " << ds[i].LastName << " " << ds[i].FirstName << endl;
input << "Diem toan : " << ds[i].Math << endl;
input << "Diem Van : " << ds[i].Physics << endl;
input << "Diem Anh : " << ds[i].English << endl;
}
input.close();
}
void DocFile(char TenFile[],SinhVien ds[],int &n)
{
ifstream output(TenFile,ios::in);
output >> n;
for(int i = 0 ; i < n ; i++)
{
output >> ds[i].ID ;
output >> ds[i].LastName;
output >> ds[i].FirstName;
output >> ds[i].Math;
output >> ds[i].Physics;
output >> ds[i].English;
}
output.close();
}
void InSV(SinhVien sv)
{
cout << " " << sv.ID << " " << sv.LastName << " " << sv.FirstName << endl;
}
void XuatDanhSach(SinhVien ds[],int n)
{
for(int i = 0 ; i < n ; i++)
{
cout << i + 1 << " " << ds[i].ID << " " << ds[i].LastName << " " << ds[i].FirstName << endl;
}
}
int main()
{
SinhVien ds[100];
int n;
NhapDanhSach(ds,n);
char TenFile[] = "Sinh Vien.txt";
DocFile(TenFile,ds,n);
//system("cls");
XuatDanhSach(ds,n);
getch();
return 0;
}
Bài liên quan
Bạn coi lại hiện tại đoạn code trên mình thấy chạy đúng mà
Chạy lần 2 xóa cái NhapDanhSach đi để đọc file thì ko đọc đc bạn ơi
Ý bạn là muốn xuất cái file mà trước đó đã nhập hả . Nếu thế chỉnh lại thế này không biết đúng ý bạn không
OK bạn,có 1 lỗi là nó xuất tên xong lại có 1 vòng lặp vô hạn nữa,cái này để mình tìm xem lại cũng đc,bạn @Chuong_Pham có thể giải thích cho mình đoạn code đc ko? mình không hiểu mà làm bài nộp thì cũng khó chịu lắm
Không hiểu khúc nào
ở đây thì mình đọc dữu liệu rồi xuất ra màn hình , do đó mình tạo 1 vong while để đọc dữ liệu theo từng dòng sử dụng getline . Để hiểu rõ hơn về getline thì bạn vào đây đọc nhé http://www.cplusplus.com/reference/string/string/getline/