注册 登录
编程论坛 C语言论坛

scanf函数问题

持剑的战士 发布于 2019-12-31 18:32, 2051 次点击
scanf("%d%d%d",&a,&b);
    printf("%d %d %d\n",a,b);

scanf("%d %d %d",&a,&b);
    printf("%d %d %d\n",a,b);
为什么我输入1□2□3
输出的结果都是1□2□3呢?

但是如果像下面这种程序,
char name[20];
char sex;
scanf("%s %c",name,&sex);
    printf("%s %c\n",name,sex);

.....
scanf("%s%c",name,&sex);
.....
我都输入wang□m
    上面就输出wang□m
    而下面的却输出wang
这是为什么呢?
请求大佬解答。
7 回复
#2
forever742019-12-31 23:38
发现
总结
记住
利用
#3
forever742019-12-31 23:40
计算机学科本身,没有一般理科的认识自然过程,因此没有那么多为什么
为什么?
前辈代码就那么实现的。
#4
komorebi01102020-01-01 20:38
蹲一个解答
#5
吕孟伟2020-01-01 22:30
scanf("%s %c",name,&sex);当""中有空格时,scanf会等待你输入一个空格。
scanf("%s%c",name,&sex);当""中没有空格时,若你输入wang□m,scanf会把空格当成一个字符。
#include <stdio.h>
int main(void)
{
    char name[10];
    char sex;
    scanf("%s%c", &name, &sex);
    printf("%s %d", name, sex);
    return 0;
}
输入输出:
wang m
wang 32
空格的十进制是32
#6
逸风er2020-01-01 23:16
我记得用scanf(%d %d,&*,&*)与scanf(%d%d,&*,&*) 前者在控制台输入时空格也是要打出来的不然就会少一个字节吧;
#7
柒贰伍玖2020-01-02 11:31
数字输入的时候 碰到非数字字符 它会认为这个数字输入完成了
字符串的话 它会吧回车键当作一个字符串输入结束,在碰到回车之前它认为你输入的东西都是一个字符串里面的
#8
bcbbcclbbc2020-01-02 22:21
用scanf()函数输入数据的时候 %c 是最容易出问题的了,因为%c说明要读取一个字符,如果没有限定,则会读取任意字符当然也包括空格,转义字符。。。
1