2014-11-09 3 views
0

결과를 .txt 파일로 출력하려고하면 프로그램이 예기치 않게 중단됩니다.파일 출력시 프로그램이 중단됨 C++

기본적으로 학생 목록을 .txt 파일에 저장하고 나중에 편리하게 검색하려고합니다. 내 프로그램은 값을 변수로 저장할 수 있지만 출력 파일에 저장하려고하면 프로그램 자체가 충돌합니다.

내 코드

//STUDENTS CLASS 

char** studentNames; 
int numberOfNames; 

void Students::setNumberOfNames(int namenumbers) // Takes in the number of student names to store 
{ 
    numberOfNames = namenumbers; 
} 


void Students::setStudentNames() // Takes a number of student names and stores them. 
{ 
    char studentinput[128] 
    studentNames = new char*[numberOfNames]; 
    for (int i=0; i<=numberOfNames; i++) 
    { 
     studentNames[i] = new char[128]; 
     cout << "Student " << i << ": " << "\n"; 
     cin.getline(studentinput, sizeof(studentinput)); 
     strcpy(studentNames[i], studentinput); 
    } 
} 


//MAIN CLASS 
Student s; 
int nums; 
int main() 
{ 
    cout << "How many names would you like to store? " << endl; 
    cin >> nums; 
    s.setNumberOfNames(nums): 
    s.setStudentNames(); 
    for(int i=0; i<=s.numberOfNames; i++) 
    { 
     cout << s.numberOfNames [i] << "\n"; // THIS WORKS FINE! DOES WHAT I SAY :) 
    } 

    // THIS IS WHERE IT CRASHES. I TRY AND STORE THE NAMES INTO THE `.txt` FILE. 
    //IF YOU WANT TO STORE 3 NAMES, IT WORKS FINE, BUT IF YOU WANT TO STORE LIKE 
    //12 NAMES THE WHOLE THING CRASHES. WHEN I COMMENT OUT THE BOTTOM BLOCK 
    //OF CODE THE PROGRAM WORKS FINE, BUT I WANT TO STORE THE NAMES. 

    ofstream outputFiles ("example.txt"); 
    if(outputFiles.is_open()) 
    { 
     for(int i=0; i<=s.numberOfNames; i++) 
     { 
      outputFiles << s.studentNames [i] << "\n"; 
     } 
    } 
} 
+1

학생의 선언을 보여주십시오. "충돌"은 무엇을 의미합니까? 특정 오류를 보여주십시오. 디버거를 사용하는 방법도 의지 할 시간. – OldProgrammer

+1

'std :: string'을 사용하면 인생이 훨씬 쉬워 질 것입니다. – shuttle87

답변

1

변경

for (int i=0; i<=numberOfNames; i++) 

프로그램에서 사방

for (int i=0; i < numberOfNames; i++) 

이다.

+0

이것은 계속 충돌합니다. ofstream이 원인이라고 생각합니다. –

+0

@RewsProg 나는 먼저 코멘트에서 OldProgrammer의 조언을 따르는 것이 좋습니다. –

+0

감사합니다. 지금 버그를 수정했습니다 :) –

관련 문제