qq_40286127
qq_40286127
2017-09-17 13:54
采纳率: 100%
浏览 1.3k

C语言从键盘输入字符错误,求解(Linux centos7)

$ cat input2.c
#include
int main()
{
int i;
char c;
char str[30];

printf("input a int  :");
scanf("%d",&i);
printf("input a char :");
scanf("%c",&c);
printf("input string :");
scanf("%s",str);
printf("int is %d,\tchar is %c,\tstring is %s\n",i,c,str);
return 0;

}
$ ./input2.o
input a int :3
input a char :input string :asdf
int is 3, char is
, string is asdf
但是如果先输入字符,后输入整数,则正常。如下:
cat input.c
#include
int main()
{
int i;
char c;
char str[30];
printf("input a char :");
scanf("%c",&c);
printf("input a int :");
scanf("%d",&i);
printf("input string :");
scanf("%s",str);
printf("int is %d,\tchar is %c,\tstring is %s\n",i,c,str);
return 0;
}
$ ./input.o
input a char :a
input a int :345
input string :abcedf
int is 345, char is a, string is abcedf

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • caozhy
    已采纳

    晕,这个问题回答过你了,怎么我的回答不见了。
    将 scanf("%c",&c); 修改为 scanf("\n%c",&c); 其余类似

    点赞 评论
  • sky__f
    CoverageFeng 2017-09-18 01:13

    第一次读入的是'\n',输入流里面认识了3之后输入了‘\n’被当成char,也是醉了这样输入你可以理解的更清晰些

    点赞 评论
  • cocos_yang
    lepton_yang 2017-09-18 10:49

    %c的前面必须有一个空格,否则系统会将你前面输入别的值之后键入的回车符读入该变量。
    http://blog.csdn.net/cy_cai/article/details/9061797

    点赞 评论
  • sum_TW
    奋斗的小程序员 2017-09-19 01:16

    回车当作一个字符接收了啊,所以用个getchar()去接收回车。

    点赞 评论

相关推荐