使用getchar()输入字符串

3 c getchar

以下代码使用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);
}
Run Code Online (Sandbox Code Playgroud)

键入时,如果我按退格键,它不应该被getchar()接收并存储在rawString指向的位置吗?但是输出只显示没有任何特殊字符的最终字符串.有人能解释为什么吗?

Joh*_*ode 5

标准输入(通常)缓冲; 像backspace这样的非打印字符由终端服务器处理,而像这样的库函数getchar()永远不会看到它们.

如果您需要阅读原始击键,那么您将需要使用C标准库之外的东西.