2016-09-30 12 views
-1

私はテキストエディタとg ++を使ってしばらくの間コンパイルと実行を行ってきましたが、何らかの理由で今日は動作しませんでした。G ++コンパイル、実行ファイルが実行されない

エラーなしでコンパイルされますが、実行可能ファイルを実行しようとすると何もしません。エラーも出力もありません。何もない。これは私が実行しようとしているコードです。ターミナルで

#include <iostream> 
#include <fstream> 

int main(){ 
// Initializes variable. 
    int coordinatePair; 
// Creates an object to use for the file. 
    std::ofstream fileReader; 
// Initiates a for-loop to get the value of each variable. 
    for(int i = 0; i == 5; i++){ 
     std::cout << "Please enter the x-coordinate of your coordinate pair. " << std::endl << "You have " << 5 - i << " pairs left to enter." << std::endl; 
     std::cin >> coordinatePair; 
// Opens the file. 
    fileReader.open("points.txt"); 
// Writes the user's values to the file. 
    fileReader << coordinatePair << std::endl; 
// Closes the file. 
    fileReader.close(); 
    } 

} 

、私は

...ファイルの場所に

cd ~/file location 
をディレクトリを作成し、私はそれをコンパイル。

g++ points_out.cpp -o points_out 

私はそれを実行しようとしました。

./points_out 

何も起こりません。エラーメッセージは出力されず、何も出力されません。コードは正確には効率的ではありませんが(forループの外側でファイルを開いたり閉じたりするほうが良いでしょう。私は何が起こるかを見るために間違ったコードを入れようとしました、そして、それは私に適切なエラーコードを与えました。私も試しました

g++ -W -Werror points_out.cpp 

...それは私にもエラーコードを与えませんでした。今週初めにコンパイルして実行した別の.cppファイルに新しいディレクトリを作成しようとしましたが、うまくいきました。何らかの理由で、これは実行されません。そして、実行可能ファイルが作成されているのでコンパイルしていると確信しています。私はまた、テキストファイルが作成されていないので、実行されていないと確信しています。

私はこのことをうまくコンパイルしてに一度実行し、それが実行されたときにテキストファイルを作成しました。私がg ++で問題に遭遇したのはこれが初めてです。私は解決策のためにどこでも見てきたが、この問題を抱えていた人のほとんどはちょうど

./points_out 

一部をやっていなかったか、mingwのの問題を持っていたかのavastをアンインストールする必要がありました。これらのどれも私が持っている問題ではありませんので、私は迷っています。

はまた、わからないこれが役立つならば、しかし、私に取得

g++ --version 

次の出力を実行している:

g++ (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4 
Copyright (C) 2013 Free Software Foundation, Inc. 
This is free software; see the source for copying conditions. There is NO 
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+1

forループの状態を確認してください。 – 1201ProgramAlarm

+1

もう一つのデバッグのヒント:デバッグ中に 'printf()'デバッグを振りかける。たとえば、 'main()'の先頭にある 'puts(" hello world ");は、プログラムが開始したことを知らせます。 –

+1

ヒント:最初のループでは、i == 5ですか? –

答えて

0

行動がプログラムが何もしないと正常に完了のために正常です。

C++ forループは、ループ本体を入力する前にループ条件を評価します。ループ本体が完了すると、オプションのポストループ式が評価され、プログラムは条件チェックに戻ります。

コードで0iに割り当ててからループに入る前にi == 5かどうかをテストします。

それはあなたが意図されたものを完全には明らかではないのですが、あなたはおそらく、我々は、コードのこの作品で迅速にそれを証明することができます

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

をmean't:

#include <iostream> 

int main() { 
    std::cout << "original loop:\n"; 
    for (int i = 0; i == 5; i++) 
     std::cout << i << '\n'; 
    std::cout << "corrected loop:\n"; 
    for (int i = 0; i < 5; i++) 
     std::cout << i << '\n'; 
} 

ライブデモ:http://ideone.com/O0Ul2z

- 補遺 -

ほとんどのプログラマーwo ULDは、それが機能していない対実行されていないことを確認するために、そのプログラムの先頭に無条件

、飾り気のないようなものを追加する
std::cout << "hello world\n"; 

を考えていません。

+0

ねえ、私はばかです。ありがとうございました。私もよく知っているので、これは屈辱的です。私はストレスや睡眠不足のせいでこれを責めます。ありがとうございました! – Rice

+0

補遺には、私はそれをしました、私はそれを最後に追加しましたので、それがうまくいかなかったのです。私が言ったように、睡眠不足。 – Rice

関連する問題