01/10/2018, 09:10

Khác nhau về đọc file giữa Visual Studio và Devc++

//#define _CRT_SECURE_NO_WARNINGS
#include<bits/stdc++.h>
#include<conio.h>

using namespace std;

const int MAX = 11;

fstream file;

void Ghi();
void Doc();
int main() {
	Ghi();
	system("cls");
	Doc();
	
	return 0;
}
void Ghi() {
	
	string ques[MAX],ansSentence[MAX][4];
	int ans[MAX];
	string temp;
	file.open("Input.inp", ios::out | ios::binary);
	
	for (int i = 0; i < MAX; i++) {
		ques[i].resize(10);
//		ansSentence[i].resize(4);
		ans[i] = i % 4;
		itoa(i, (char*)ques[i].c_str(), 10);	
		cout<<ques[i]<<endl;
		for (int j = 0; j < 4; j++) {
			ansSentence[i][j].resize(6);
			itoa(j+100, (char*)ansSentence[i][j].c_str(), 10);
		}
		//ques[i].shrink_to_fit();
	}
	
	for (int i = 0; i < MAX; i++) {
		//for(int k=0;k<ques[i].size();k++)
		cout << ques[i] << endl;
		for (int j = 0; j <4; j++) {
			cout <<j<<". "<< ansSentence[i][j] << endl;
		}
		cout << endl << endl;
	}
	int n = MAX;
	file.write((char*)(&n), sizeof(int));
	file.write((char*)(&ques), sizeof(string)*MAX);
	file.write((char*)(&ansSentence), sizeof(string)*MAX*4);
	file.write((char*)(&ans), sizeof(int)*MAX);
	file.close();
}
void Doc() {
	int n;
	int *ans;
	string *ques,**ansSentence;
	file.open("Input.inp", ios::in | ios::binary);
	file.read((char*)(&n), sizeof(int));
	
	ques = new string[n];
	ans = new int[n];
	ansSentence = new string*[n];
	
	for (int i = 0; i < n; i++) {
		ansSentence[i] = new string[4];
	}
	
	for (int i = 0; i < n; i++) {
		ques[i].resize(100);
		file.read((char*)(&ques[i]), sizeof(string));
	}
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < 4; j++) {
			ansSentence[i][j].resize(100);
			file.read((char*)(&ansSentence[i][j]), sizeof(string));
		}
	}
	for (int i = 0; i < n; i++) {
		file.read((char*)(&ans[i]), sizeof(int));
	}

	for (int i = 0; i < MAX; i++) {
		//for(int k=0;k<ques[i].size();k++)
		cout << ques[i] << endl;
		for (int j = 0; j <4; j++) {
			cout << j << ". " << ansSentence[i][j] << endl;
		}
		cout << endl << endl;
	}
	file.close();
}

Khi đọc file vơi Visual Studio thì không vấn đề gì, nhưng khi chạy với devc++ thì lúc đọc từng phần tử của mảng ques[i] thì chương trình báo lỗi “Program received SIGNAL, Segmentation fault”.
Mọi người có thê giúp mình tìm nguyên nhân và khắc phục lỗi này với ạ.

Bài liên quan
0