2

Turboc3.1でCで練習するためのコードを書きました。私の目的は、キャラクターの出力を取得することでした。私のコードは次のとおりです。

    #include<stdio.h>
    #include<conio.h>

    void main(){

       char a[10],b;
       int i;

       clrscr();

       for(i=0;i<10;i++)
          a[i]='$';

       for(i=0;i<10;i++){
          b=getchar();
          a[i]=b;
       }

           for(i=0;i<10;i++)
      printf("%c",a[i]);

       getch();
   }

ここでは、入力した文字で10文字を取得する必要がありましたが、実行後は5文字しか取得できませんでした。私はここに横たわっている問題を得ることができませんでした。手伝ってくれませんか?前もって感謝します。

4

5 に答える 5

3

getchar()を実行すると、文字が読み取られます。

したがって、aのようなものを入力してから入力すると、実際に入力するのはaとの2文字'\n'です。したがって、出力には5文字と5'\n'しかありません。

これを試して

#include<stdio.h>
#include<conio.h>

void main(){

   char a[10],b;
   int i;

   clrscr();

   for(i=0;i<10;i++)
      a[i]='$';

   for(i=0;i<10;i++){
      b=getchar();
      if(b=='\n'){i--;continue;}
      a[i]=b;
   }

   for(i=0;i<10;i++)
   printf("%c",a[i]);

   getch();
}
于 2013-01-27T17:21:34.880 に答える
2

あなたはあなたの問題を解決するために簡単なscanfをすることができます

scanf("%c",&a[i]);

しかし、それでも、getchar()が何をするかを理解するために、getchar()を呼び出すたびに、入力の次の文字を読み取り、文字に関係なくそれを返します。あなたの場合、あなた\nは数字を入力した後に文字をタイプします、それでそれはあなたの数字の最初と\nそれぞれの後に数字を保存します。

あなたが中毒になっている場合は、このチェックを行うことができますgetchar()

      if(c=getchar()) == '\n')
         c=getchar(); 
于 2013-01-27T17:24:33.183 に答える
1

では、どうやって修正するのか、デン?

どうですか:

int ch;

while (i < 10 && (ch = getchar()) != EOF)
    if (ch != '\n')
        a[i++] = ch;
于 2013-01-27T17:22:42.713 に答える
1

おそらく使用するより簡単な解決策:

scanf("%c",&a[i]);

それ以外の :

b = getchar();
a[i] = b;

于 2013-01-27T17:24:27.903 に答える
0

getch()おそらく、またはgetche()の代わりにgetchar()文字を読み取ることができます。

于 2013-01-27T17:24:10.933 に答える