2012-02-26 14 views
1

最近、Visual C++ 2010 ExpressでFile Streams write()とread()を使用してクラスオブジェクトを読み書きする単純なC++プログラムを作成しました。プログラムはうまくコンパイルされますが、.exeファイルに移動して開くと、jiffyで終了します。私は最後に '_getch()'を使用しましたが、まだこの問題があります。ファイルストリームプログラムで.exeウィンドウが表示されない

私はTurbo C++のバックグラウンドを持っています(私の学校を責める)。

ここにコードがあります。

#include "stdafx.h" 
#include "fstream" 
#include "iostream" 
#include "conio.h" 

using namespace std; 

struct Student 
{ 
    char name[40]; 
    char grade; 
    float marks; 
public: 
    void getdata(); 
    void display(); 
}; 

void Student :: getdata(void) 
{ 
    char ch; 
    cin.get(ch); 
    cout << "Enter name: "; 
    cin.getline(name, 40); 
    cout << "Enter grade: "; 
    cin >> grade; 
    cout << "Enter marks: "; 
    cin >> marks; 
} 

void Student :: display(void) 
{ 
    cout << "Name: " << name << endl; 
    cout << "Grade: " << grade << endl; 
    cout << "Marks: " << marks << endl; 
} 


int _tmain(int argc, _TCHAR* argv[]) 
{ 

    Student arts[3]; 
    fstream filin; 
    filin.open("Stu.dat", ios::in|ios::out); 
    if (!filin) 
    { 
     cout << "Cannot open file! \n"; 
     return 1; 
    } 
    cout << "Enter details for 3 students: "; 
    for (int i =0; i < 3; i++) 
    { 
     arts[i].getdata(); 
     filin.write((char *) & arts[i], sizeof (arts[i])); 
    } 
    filin.seekg(0); 
    cout << "The contents of stu.dat are shown below: "; 
    for(int i = 0; i < 3; i++) 
    { 
     filin.read((char *) & arts[i], sizeof (arts[i])); 
     arts[i].display(); 
    } 
    filin.close(); 
    _getch(); 
    return 0; 
} 
+0

を入れてみてください: '無効doExit(){_getch(); } 'を追加し、' atexit(doExit); 'を' main'関数の最上位に追加します。また、IDEではなく、コマンドラインからプログラムを実行して、出力を表示したままにすることもできます。 – spencercw

答えて

1

は、ウィンドウがどこかでこの小さな機能に入れる閉じる前に出力を表示するには、ここで_getch();

cout << "Cannot open file! \n"; 
    _getch(); 
    return 1; 
+0

しかし、.exeウィンドウには 'Can not open file!'しか表示されません。それはそうするつもりはありません。 –

+0

@Manavあなたはエラーが報告されてうれしいですね! – jrok

関連する問題