2016-05-29 5 views
2

私はC言語を使い慣れていないので、いくつかのチュートリアルを続けていますが、CLionでコードを実行するとエラーが発生します。Clion scanfで前の行を複製

いつでもscanfを使用すると、コンソールに前の行が重複しているように見えます。ここで

は、それが出力されているものです:

Please enter your first number:5 
Please enter your first number: 5 
Please enter your second number:6 
Please enter your second number: 6 
5 < 6 
Process finished with exit code 0 

ここで私はそれが出力すべきだと思うものです:

Please enter your first number:5 
Please enter your second number:6 
5 < 6 
Process finished with exit code 0 

そしてもちろん、ここに私のコードだ:

#include <stdio.h> 

int main() 
{ 
    int no1; 
    int no2; 

    printf("Please enter your first number: "); 
    scanf(" %d", &no1); 

    printf("Please enter your second number: "); 
    scanf(" %d", &no2); 

    if(no1 < no2){ 
     printf("%d < %d", no1, no2); 
    } else if (no1 == no2) { 
     printf("Both numbers are %d", no1); 
    } else { 
     printf("%d > %d", no1, no2); 
    } 

    return 0; 
} 

私もよMinGW 3.21、CMake 3.5.1を使用。

編集: 通常のコマンドラインでコードを実行したところ、問題はないことがわかりました。それは単にCLionのコンソールであるようです。

+0

本当に奇妙です。それは私のMacで正しく動作します。 Sidenote: 'scanf'のフォーマットは' '%d" 'でなければなりません(しかし、両方のフォーマットで私のシステムで動作は同じです)。また、 'printf'の最後に' \ n'がありません。 – DarkDust

+0

@daええ、スペースは違いを生み出さなかった。私はそれを削除することを忘れてしまった。 –

+1

@DarkDust:先頭のスペースが空白を食いつぶします。最初の入力には必要ありませんが、2番目の入力には関連している可能性があります。それは保たれるべきです。 – Olaf

答えて

1

それCLionのコンソールのバグ - CPP-2580 の2つの回避策があります。

    はPTYをオフにし
  1. :レジストリ(ヘルプのrun.processes.with.ptyオプションを無効にして - >アクションを探します - >レジストリ...)
  2. MinGWの代わりにCygwinを使用