首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用getchar()输入字符串

使用getchar()输入字符串
EN

Stack Overflow用户
提问于 2010-09-07 21:39:22
回答 2查看 17K关注 0票数 3

下面的代码使用getchar()接受一行输入。

代码语言:javascript
复制
#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);
}

在输入时,如果我按backspace,getchar()是否也应该接收到它&存储在rawString指向的位置?但是,输出只显示没有任何特殊字符的最终字符串。有人能解释一下为什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-07 22:00:07

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

如果您需要读取原始击键,那么您将需要使用C标准库之外的内容。

票数 5
EN

Stack Overflow用户

发布于 2017-05-11 03:03:42

代码语言:javascript
复制
#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);
}

这将会起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3659109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档