为了账号安全,请及时绑定邮箱和手机立即绑定

scanf()将新行char留在缓冲区中

scanf()将新行char留在缓冲区中

慕姐4208626 2019-05-21 16:58:44
scanf()将新行char留在缓冲区中我有以下程序:int main(int argc, char *argv[]){  int a, b;  char c1, c2;  printf("Enter something: ");  scanf("%d",&a); // line 1  printf("Enter other something: ");  scanf("%d", &b); // line 2  printf("Enter a char: ");  scanf("%c",&c1); // line 3  printf("Enter another char: ");  scanf("%c", &c2); // line 4  printf("Done"); // line 5  system("PAUSE");  return 0;}正如我在C书中读到的那样,作者说scanf()在缓冲区中留下了一个新的行字符,因此,程序不会在第4行停止供用户输入数据,而是将新行字符存储在c2中并移至第5行。是对的吗?但是,这只发生在char数据类型中吗?因为我没有int在第1,2,3行中看到数据类型的这个问题。是不是?
查看完整描述

3 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

使用scanf(" %c", &c2);。这将解决您的问题。


查看完整回答
反对 回复 2019-05-21
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

getchar()在呼叫第二之前使用scanf()。


scanf("%c", &c1);

getchar();  // <== remove newline

scanf("%c", &c2);


查看完整回答
反对 回复 2019-05-21
  • 3 回答
  • 0 关注
  • 614 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信