그것은 프로젝트이고 나는 가능한 한 빨리 마무리하고 싶어, 내 코드가 어떻게 만들어 지는지 지독하게 무시하십시오. xcode에서 코드를 실행하려고하면 오류가 발생합니다. 이 프로그램에서는 전화 레코드가있는 텍스트 파일을 가져와 정보를 기반으로 비용을 표시합니다. 파일 경로가 정확한지, 나는이 오류의 원인이 무엇을 내 코드를 잘못 알고하지 않습니다이상한 오류 C++ 엑스 코드 - 스레드 1 : EXC_BAD_ACCESS
https://drive.google.com/file/d/0Bysk6_x4B46uU2pmWFhRYWd6d1E/view?usp=sharing
여기에 코드입니다 :
// phoneRecords.cpp
// PhoneRecords
//
// Created by Roei Bustein on 7/19/16.
// Copyright © 2016 Roei Bustein. All rights reserved.
//
/*
* This program reads records from a file and parse each
* record into variables as it goes
*/
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
#include <algorithm>
#include <iterator>
using namespace std;
string makeTimeIntoInt(string line[]) {
string temp = "";
string time = line[2];
for (char a : time) {
if (a == ':')
continue;
else
temp += a;
}
return temp;
}
float calculateCost(string line[]) {
int time = stoi(line[2]);
int duration = stoi(line[3]);
if (line[1] == "Mo" || line[1] == "Tu" || line[1] == "We" ||
line[1] == "Th" || line[1] == "Fr") {
if (time < 800 || time > 1800) {
return duration * 0.25;
} else
return duration * 0.4;
}
else if (line[1] == "Sa" || line[1] == "Su") {
return duration * 0.15;
}
return 0;
}
int main() {
ifstream inputFile;
string line;
int cnt = 0;
inputFile.open(
"/Users/roeibustein/Documents/C++ "
"Workspace/PhoneRecords/PhoneRecords/calls1.txt");
string arr[18];
string line1[3], line2[3], line3[3], line4[3], line5[3], line6[3];
float costLine1, costLine2, costLine3, costLine4, costLine5, costLine6;
if (inputFile.is_open()) {
while (getline(inputFile, line)) {
istringstream split(line);
while (split) {
split >> arr[cnt];
cnt++;
split >> arr[cnt];
cnt++;
split >> arr[cnt];
cnt++;
}
}
}
line1[1] = arr[1];
line1[2] = arr[2];
line1[3] = arr[3];
line2[1] = arr[4];
line2[2] = arr[5];
line2[3] = arr[6];
line3[1] = arr[7];
line3[2] = arr[8];
line3[3] = arr[9];
line4[1] = arr[10];
line4[2] = arr[11];
line4[3] = arr[12];
line5[1] = arr[13];
line5[2] = arr[14];
line5[3] = arr[15];
line6[1] = arr[16];
line6[2] = arr[17];
line6[3] = arr[18];
line1[2] = makeTimeIntoInt(line1);
line2[2] = makeTimeIntoInt(line2);
line3[2] = makeTimeIntoInt(line3);
line4[2] = makeTimeIntoInt(line4);
line5[2] = makeTimeIntoInt(line5);
line6[2] = makeTimeIntoInt(line6);
costLine1 = calculateCost(line1);
costLine2 = calculateCost(line2);
costLine3 = calculateCost(line3);
costLine4 = calculateCost(line4);
costLine5 = calculateCost(line5);
costLine6 = calculateCost(line6);
cout << line1[1] << " " << line1[2] << " " << line1[3] << " " << costLine1
<< "\n";
cout << line2[1] << " " << line2[2] << " " << line2[3] << " " << costLine2
<< "\n";
cout << line3[1] << " " << line3[2] << " " << line3[3] << " " << costLine3
<< "\n";
cout << line4[1] << " " << line4[2] << " " << line4[3] << " " << costLine4
<< "\n";
cout << line5[1] << " " << line5[2] << " " << line5[3] << " " << costLine5
<< "\n";
cout << line6[1] << " " << line6[2] << " " << line6[3] << " " << costLine6
<< "\n";
return 0;
}
감사합니다입니다 !!!!!! –
그래서 어떤 배열도 범위를 벗어나지 않고 여전히 동일한 오류가 발생했습니다 (범위를 벗어난 유일한 배열이 아닙니다). 내가 그 오류를 일으킬 수있는 다른 이유를 아십니까? –
Xcode 'Product -> Scheme -> Eidt Scheme -> Diagnostics'를 선택한 다음 'Enable Zoobie Objects'및 'Enable Address Sanitizer'를 선택한 다음 코드를 실행하고 발생한 문제를 확인하십시오. – zylenv