3

次のコードは、getchar() を使用して入力行を受け入れます。

#include <stdio.h>
#include <stdlib.h>

int main()
{
 char *rawString = (char *)malloc(200*sizeof(char));
 char *rawStringInitial = rawString;
 char c;
 c=getchar();
 while(c!='\n')
 {
  *rawString=c;
  rawString++;
  c=getchar();
 }
 *rawString='\0';
 printf("\n[%s]\n",rawStringInitial);
 return(0);
}

入力中にバックスペースを押すと、getchar() によって受信され、rawString が指す場所に保存されるべきではありませんか? ただし、出力には、特殊文字を含まない最終的な文字列が表示されます。誰かが理由を説明できますか?

4

2 に答える 2

5

標準入力は (通常) バッファリングされます。バックスペースなどの非表示文字はターミナル サーバーによって処理され、ライブラリ関数などでgetchar()は表示されません。

生のキーストロークを読み取る必要がある場合は、C 標準ライブラリ以外のものを使用する必要があります。

于 2010-09-07T14:00:06.633 に答える