0

ユーザーに入力を促すコードを ANSI C で作成したいと考えています。まず、プロンプトを印刷します。次に、文字が入力されてエコーされた場合にのみ、プロンプトとループをエコーし​​たい。

無限ループを作成するには、while() の条件を、while(1) のように常に true になる条件に設定する必要があることを知っています。

ただし、コードをテストすると、「文字を入力してください」という出力を何度もループしているようです。Cの初心者のためのヒントはありますか?

#include <stdio.h>

int main()
{

char mychar;

while(1)
    printf("Enter a characater:\n");
    scanf("%c", &mychar);
    printf("%c", &mychar)
}
4

2 に答える 2

8

C のブロックは、インデントに基づいていません (たとえば、Python のように)。次のように、ブロックは で始まり、{で終わる必要があり}ます。

while(1)
{
    printf("Enter a characater:\n");
    scanf("%c", &mychar);
    printf("%c", mychar);// NOTE the missing `&` in front of `mychar` here
}
于 2013-04-17T06:37:39.953 に答える
0

ソース ファイル全体を自動フォーマット/自動インデントできるエディタまたは IDE を使用する必要があります。そのようなことがあれば、コードは次のようになるため、すぐに問題に気付くでしょう。

int main()
{
  char mychar;

  while(1)
    printf("Enter a characater:\n");
  scanf("%c", &mychar);
  printf("%c", &mychar)
}

そして、これは経験豊富な C プログラマーでさえ時々犯す間違いであるため、簡単な解決法 (autoindent/autoformat コード) を用意しておくことは、今後も重要です。


%c無関係の問題です。後者のフォーマット指定子にchar へのポインタを渡しますprintf。コンパイラで警告を有効にする必要があります。警告が表示されます。

于 2013-04-17T06:47:35.417 に答える