1

非常に単純なプログラムは機能していません。

int main ()
{
  int  n; 
  while (scanf("%d", &n) > 0)
  return 0;
}

上記は入力への読み取りのみを期待しますが、入力も出力します。

2
2
3
3

while ループにこの行もある場合、上記の動作が予想されますが、そうではありません。

printf("%d\n", n);

説明できますか?

アップデート

なぜこれが起こっているのかを説明する答えは何もありません。また、Nios 2 IDE には、ローカル エコーをオンまたはオフにするための設定はありません。そして、もしあったとしても、おそらく予期しない出力を引き起こす可能性はありません。また、このプログラムはその入力も出力します。

#include <stdio.h>

int main ()
{
  int  n; 
  while (scanf("%d", &n) > 0)
    ;
  return 0;
}

したがって、Eclipse に基づくこの Nios 2 IDE は、誰の選択でもありません。

4

3 に答える 3

3

2人の候補者

  1. 端末 I/O で不要なローカル エコーがオンになっています。したがって、このプログラムの問題ではなく、OS の問題です。

  2. 期待される結果を呼び出し;の最後にありません。while()投稿されたコードは、いくつかの入力を単純に読み取り、すぐに終了する必要があります。これは、OPが語るものではありません。問題の誤記であると思われます。
    [編集] @alk ソリューションのすべてを参照してください。確かに、投稿には表示されないOPの実際のコードに何かがあります-おそらく混合ととが\r原因\r\nですか\n

    // Was it a typo that the OP did not have a;at the end?
    while (scanf("%d", &n) > 0)

于 2013-09-28T16:33:26.907 に答える
-1

ほとんどの場合、コードは次のようになります。

int main ()
{
  int  n; 
  while (scanf("%d", &n) > 0)                                                                                           printf("%d\n", n);
  return 0;
}

// ------------------------------------------------------------------ scroll right >>> --------------------------------------------------
于 2013-09-28T15:54:45.950 に答える
-7

scanf()入力として与えられたパラメータの数である整数を返します。あなたの場合scanf("%d",&n)は1を返します。

これは、ref- http://cboard.cprogramming.com/c-programming/119407-scanf-return-values.htmlとして確認できます。

于 2013-09-28T15:51:34.950 に答える