以下代码使用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()&amp;存储在rawString指向的位置?但是输出只显示没有任何特殊字符的最终字符串。有人能解释一下原因吗?
答案 0 :(得分:5)
标准输入(通常)缓冲;像backspace这样的非打印字符由终端服务器处理,像getchar()
这样的库函数永远不会看到它们。
如果您需要阅读原始击键,那么您将需要使用C标准库之外的东西。
答案 1 :(得分:0)
#include<stdio.h>
#include<conio.h>
#include<string.h>
void get_string(char *string);
void main(){
char *stringVar;
clrscr();
printf("Enter String : ");
get_string(stringVar);
printf("String Enter : %s",stringVar);
getch();
}
void get_string(char *string){
char press;int i=0;
do{
press=getch();
if(press!=8){
printf("%c",press);
string[i]=press;
i++;
}
else if(i>0){printf("\b%c\b",0);sting[i]=NULL;i--;}
}while(press!13);
}
这是可行的。