2017-09-24 5 views
0

Read()関数のRead()で配列klas []とnauj []を出力するとすべてが正常に読み込まれるようですが、他のテキストファイルでいっぱいになる。ここで何が問題だと思いますか?あなたがfklase >> klas[i];でやるようなint klas[] = {};などcmdのウィンドウが機能しなくなった、テキストファイルが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(); 

} 

答えて

2

ゼロサイズの配列は、標準およびそれらへの書き込みはありません、彼らは何かを格納するための余地を持っていないので、未定義の動作です。また、関数の引数としてint klas[]を使用すると、実際にはint * klasに相当します。

+0

こんにちは、両方の配列がint klas [100]とその作業のような最大値を持つように変更しました!ありがとう! –

関連する問題