2012-01-19 8 views
3

Windows7マシンにcygwinをインストールしましたが、私はいくつかのC++コードを実行しています。私がこのコードを実行しているとき:cygwinコンソールにエラーメッセージやcoutメッセージがありません

#include <iostream> 
#include <string> 
#include <fstream> 
#include <time.h> 
#include <math.h> 
#include "Pop.h" 
using namespace std; 


int main() { 
    ifstream in; 
    ofstream out; 
    cout << "something"; 
    out.open("res7.txt", ios::out|ios::app); 
    if (out.is_open()) 
    out << "1\n"; 
    else 
    cout << "unable to open res7 file"; 
    out.close(); 
    int seed = time(NULL); 
    out.open("res7.txt", ios::out|ios::app); 
    if (out.is_open()) 
    out << "2\n"; 
    else 
    cout << "unable to open res7 file"; 
    out.close(); 
    out.open("res7.txt", ios::out|ios::app); 
    if (out.is_open()) 
    out << "seed " << seed << '\n'; 
    else 
    cout << "unable to open res7 file"; 
    out.close(); 
    out.open("res7.txt", ios::out|ios::app); 
    if (out.is_open()) 
    out << "3\n"; 
    else 
    cout << "unable to open res7 file"; 
    out.close(); 
    srand (seed); 
    out.open("res7.txt", ios::out|ios::app); 
    if (out.is_open()) 
    out << "4\n"; 
    else 
    cout << "unable to open res7 file"; 
    out.close(); 
    double parameters[4]; 
    int location; 
    in.open("input7.txt", ios::in); 
    out.open("res7.txt", ios::out|ios::app); 
    if (out.is_open()) 
    out << "5\n"; 
    else 
    cout << "unable to open res7 file"; 
    out.close(); 
    return 0; 
} 

コンソール(何か)に出力があります。しかし、私は完全なコードを実行する:

#include <iostream> 
#include <string> 
#include <fstream> 
#include <time.h> 
#include <math.h> 
#include "Pop.h" 
using namespace std; 


int main() { 
    ifstream in; 
    ofstream out; 
    cout << "something"; 
    out.open("res7.txt", ios::out|ios::app); 
    if (out.is_open()) 
    out << "1\n"; 
    else 
    cout << "unable to open res7 file"; 
    out.close(); 
    int seed = time(NULL); 
    out.open("res7.txt", ios::out|ios::app); 
    if (out.is_open()) 
    out << "2\n"; 
    else 
    cout << "unable to open res7 file"; 
    out.close(); 
    out.open("res7.txt", ios::out|ios::app); 
    if (out.is_open()) 
    out << "seed " << seed << '\n'; 
    else 
    cout << "unable to open res7 file"; 
    out.close(); 
    out.open("res7.txt", ios::out|ios::app); 
    if (out.is_open()) 
    out << "3\n"; 
    else 
    cout << "unable to open res7 file"; 
    out.close(); 
    srand (seed); 
    out.open("res7.txt", ios::out|ios::app); 
    if (out.is_open()) 
    out << "4\n"; 
    else 
    cout << "unable to open res7 file"; 
    out.close(); 
    double parameters[4]; 
    int location; 
    in.open("input7.txt", ios::in); 
    out.open("res7.txt", ios::out|ios::app); 
    if (out.is_open()) 
    out << "5\n"; 
    else 
    cout << "unable to open res7 file"; 
    out.close(); 
    if (in.is_open()) { 
    out.open("res7.txt", ios::out|ios::app); 
    if (out.is_open()) 
     out << "6\n"; 
    else 
     cout << "unable to open res7 file"; 
    out.close(); 
    char line[256]; 
    while (!in.getline(line, 256).eof()) { 
     out.open("res7.txt", ios::out|ios::app); 
     if (out.is_open()) 
    out << "7\n"; 
     else 
    cout << "unable to open res7 file"; 
     out.close(); 
     char *input = strtok(line, " "); 
     int i=0; 
     while (input!=NULL) { 
    out.open("res7.txt", ios::out|ios::app); 
    if (out.is_open()) 
     out << "8\n"; 
    else 
     cout << "unable to open res7 file"; 
    out.close(); 
    parameters[i] = atof(input); 
    input = strtok(NULL, " "); 
    i++; 
     } 
     int rnum = rand(); 
     location = rnum%10000; 
     out.open("res7.txt", ios::out|ios::app); 
     if (out.is_open()) 
    out << "9\n"; 
     else 
    cout << "unable to open res7 file"; 
     out.close(); 
     Pop p(parameters[0], parameters[1], 0.2, 0.1, parameters[2], location); 
     out.open("res7.txt", ios::out|ios::app); 
     if (out.is_open()) 
    out << "10\n"; 
     else 
    cout << "unable to open res7 file"; 
     out.close(); 
     double L = exp(-parameters[3]); 
     double FF_mean = p.FF_steady(parameters[3], L, 0.0); 
     out.open("res7.txt", ios::out|ios::app); 
     if (out.is_open()) 
    out << "11\n"; 
     else 
    cout << "unable to open res7 file"; 
     out.close(); 
     out.open("res7.txt", ios::out|ios::app); 
     if (out.is_open()) { 
    out << "number of chromosomes is " << p.all_population[0]->ga->chromosome << " alpha is " << parameters[2] << " cost is " << parameters[1]; 
    out << " a is " << parameters[0] << " u is " << parameters[3] << " location is " << location << " FF steady is " << FF_mean << '\n'; 
     } 
     else 
    cout << "unable to open res7 file FF"; 
     out.close(); 
     out.open("res7.txt", ios::out|ios::app); 
     if (out.is_open()) 
    out << "12\n"; 
     else 
    cout << "unable to open res7 file"; 
     out.close(); 
     if (FF_mean>0.1) { 
    out.open("res7.txt", ios::out|ios::app); 
    if (out.is_open()) 
     out << "13\n"; 
    else 
     cout << "unable to open res7 file"; 
    out.close(); 
    p.insert_O(0.05); 
    out.open("res7.txt", ios::out|ios::app); 
    if (out.is_open()) 
     out << "14\n"; 
    else 
     cout << "unable to open res7 file"; 
    out.close(); 
    double total_mean = p.steady(parameters[3], L, 0.0); 
    double perc = p.perc_O(); 
    out.open("res7.txt", ios::out|ios::app); 
    if (out.is_open()) 
     out << "total steady is " << total_mean << " perc O is " << perc << '\n'; 
    else 
     cout << "unable to open res7 file"; 
    out.close(); 
     } 
    } 
    } 
    else 
    cout << "Unable to open input7 file\n"; 
    in.close(); 
    return 0; 
} 

私はコンソールに出力が表示されません。別のマシンでコードを実行すると、浮動小数点例外があることがわかります。私はそれがどこにあるのかは分かると思いますが、私が理解していないのは、cygwinのコンソールで出力やエラーが表示されない理由です。誰でも助けてくれますか?

+3

コードを表示してください。 –

+0

また、Cygwin gccなどを使用していますか? – ak2

+0

「cout」は、「res7」ファイルを開くことができない場合にのみ呼び出されます。 'printf()'は機能しますか? 'printf()'の後に 'cout <<" hello \ n ";'を追加してみてください(基本的にはいつも呼び出されます)。 – hmjd

答えて

0

コードがコンパイルされていますか?最後の3行目から最後の行に

in.close();*/ 

ただし、opening/*タグはありません。あなたのコードが実際にコンパイルされていることを確認し、新しい.exeが生成されていることを確認します。 coutを持たない古い.exeをコンパイルして実行していない可能性があります。

例外がスローされないことを確認してください。私は "Pop.h"のソースが見つからないのでコードを完全にテストすることができないので、コンパイル時にどのようなエラーが発生するか完全に見ることはできません。あなたのプログラムの最初に頭を入れてみて、Pop.hにソースを与えて、もっとテストしてみてください。

0

最初に、例外は情報を与えなくてもプログラムを終了させることがあります。 CygwinはWindowsとUnixを結合しようとする試みであり、必ずしも完全に機能するとは限りません。

第2に、std::coutはバッファリングされたストリームです。そのため、各operator<<は、バッファがいっぱいになり、自動的に出力されるまで、バッファを明示的にでフラッシュするか、std::endlのように暗黙的にバッファをフラッシュします。

したがって、バグを見つけて修正するには、デバッガまたは他のシステムを使用する必要があります。また、さまざまなエラーや実行中の動作など、動作が異なるように複数のプラットフォームでテストする必要があります。

関連する問題