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

为什么scanf里%d后加了个空格,输入数字时加逗号结果只能给出一个不及格的成绩

新手714 发布于 2020-05-15 16:59, 5024 次点击
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int *p, i;
    void c(int*);
    p = (int*)malloc( 5*sizeof(int));
    for (i = 0; i < 3; i++)
        scanf("%d ", p + i);//<-------here//
    c(p);
    return 0;
}
void c(int*x)
{
    int i;
    printf("不及格的有:\n");
    for (i = 0; i < 3; i++)
        if (*(x+i) < 60)
            printf("%d  ", x[i]);
    printf("\n");
}
18 回复
#2
forever742020-05-15 18:14
scanf老老实实地执行你的意志,期待空格作为分隔符。
结果你却背叛了它敲了逗号,它生个气不是很正常吗?
#3
新手7142020-05-15 21:04
回复 2楼 forever74
空格它也不满意
#4
新手7142020-05-15 21:13
回复 2楼 forever74
大佬这次要翻车了吗
#5
forever742020-05-15 21:49
如果你喜欢看翻车,那就翻吧。
再见。
#6
BJenjoy2020-05-15 23:40
必须是空格,输入时像
80 93 23
#7
新手7142020-05-16 01:33
回复 6楼 BJenjoy
你试试
#8
新手7142020-05-16 10:56
回复 5楼 forever74
所以无解?
#9
BJenjoy2020-05-16 12:22
以下是引用新手714在2020-5-16 01:33:57的发言:
你试试
因为ISO的I/O很复杂,我专门专门测试过,加空格没问题
#10
新手7142020-05-16 12:33
回复 9楼 BJenjoy
加空格输出不了结果
#11
BJenjoy2020-05-16 16:20
以下是引用新手714在2020-5-16 12:33:27的发言:
加空格输出不了结果
我不知道你所说的不出结果是什么意思
80 93 23
三个数都要在后面带个空格,输完后,按下回车,再按Ctrl+d结束输入,就会把23这个值规为不及格打印到屏幕上
#12
新手7142020-05-16 16:49
回复 11楼 BJenjoy
我试过很多次了都是不行的
只有本站会员才能查看附件,请 登录
#13
BJenjoy2020-05-16 18:02
以下是引用新手714在2020-5-16 16:49:16的发言:
我试过很多次了都是不行的

你按Ctrl+d结束输入啊,你没看到一直在等待输入吗,就是按住Ctrl不放再按d,如果不行,就查看下你的系统输入结束组合键是什么。
#14
新手7142020-05-16 18:21
回复 13楼 BJenjoy
为什么scanf里加空格需要手动结束输入再按enter
#15
新手7142020-05-16 18:28
回复 14楼 新手714
应该是因为加了空格后它不知道结束了
#16
bcbbcclbbc2020-05-16 21:07
这么说???明知故犯有何益处?
只有本站会员才能查看附件,请 登录
#17
新手7142020-05-17 09:33
回复 16楼 bcbbcclbbc
有详细的解释吗?这算是操作系统的原理?enter键的作用是什么?为什么按enter键能让终端窗口输出结果它不是只是将\n放入缓存区吗?
#18
新手7142020-05-17 09:58
回复 16楼 bcbbcclbbc
明知故犯???脑子进化到现在是干嘛用的
#19
血月霜2020-05-17 18:38
emmm,c有get吗(我学c++的)
1