2017-09-24 2 views
0

in der Funktion Read() wenn ich Arrays klas [] und nauj [] alles scheint gut gelesen, aber zurück in der Hauptfunktion werden sie zerstört und scheinen mit einer anderen Textdatei gefüllt werden. Hast du irgendeine Idee, was das Problem hier ist?cmd Fenster funktioniert nicht mehr, Textdatei wird falsch gelesen mit fstream

#include <iostream> 
#include <fstream> 

using namespace std; 

const char klase[] = "klase.txt"; 
const char naujokai[] = "lele.txt"; 

void Read(int klas[], int nauj[], int &nk, int &nj); 

int main() 
{ 
    int klas[] = {}; 
    int nauj[] = {}; 
    int nk; 
    int nj; 
    Read(klas, nauj, nk, nj); 

    for(int i = 0; i < nk; i++){ 
     cout << klas[i] << endl; 
    }for(int i = 0; i < nj; i++){ 
     cout << nauj[i] << endl; 
    } 



    return 0; 
} 

void Read(int klas[], int nauj[], int &nk, int &nj) 
{ 
    ifstream fklase(klase); 
    fklase >> nk; 
    for(int i = 0;i < nk;i++){ 
     fklase >> klas[i]; 
     cout << klas[i] << endl << endl; 
    } 
    fklase.close(); 
    ifstream fnaujokai(naujokai); 
    fnaujokai >> nj; 
    for(int i = 0; i < nj; i++){ 
     fnaujokai >> nauj[i]; 
     cout << nauj[i] << endl << endl; 
    } 
    fnaujokai.close(); 

} 

Antwort

2

Null-size Arrays wie int klas[] = {}; ist nicht Standard und das Schreiben in sie, wie Sie in fklase >> klas[i]; tun, ist nicht definiertes Verhalten, da sie keinen Platz zum Speichern von nichts. Beachten Sie auch, dass, wenn Sie int klas[] als Funktionsargument verwenden, es tatsächlich int * klas entspricht.

+0

Hallo, ich habe beide Arrays geändert, so dass sie einen maximalen Wert haben wie int klas [100] und es funktioniert! Vielen Dank! –