标题:各位大神麻烦帮忙看一下
只看楼主
孙宇道
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2020-8-10
结帖率:0
已结贴  问题点数:20 回复次数:4 
各位大神麻烦帮忙看一下
我下面这段程序是测试stdinbuf中的'\n'的个数,最终统计结果为j,为什么输出j值是1不是3?麻烦各位大神帮忙看一下,本人小白一个
#include<stdio.h>
int main(void)
{
    int aa[10];
    int i,j=0;
    for (i = 0; i < 3; i++)
    {
        scanf_s("%d", &aa[i]);
        printf("%d", aa[i]);
    }
    while (getchar() == '\n')
    {
        j++;
        printf("%d", j);
    }
    return 0;
}
搜索更多相关主题的帖子: i++ printf for while int 
2020-08-10 20:54
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
得分:20 
输入1\n2\n3\n
第一次循环%d读取1
stdin滞留\n2\n3\n
第二次循环%d读取\n2
stdin滞留\n3\n
第三次循环%d读取\n3
stdin滞留\n
循环结束
开始执行getchar 读取\n
stdin空
第二次执行getchar 阻塞

https://zh.
2020-08-10 21:04
孙宇道
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2020-8-10
得分:0 
回复 2楼 lin5161678
输入1\n2\n3\n
第一次循环%d读取1
stdin滞留\n2\n3\n
第二次循环%d读取\n2
scanf() 会把 stdinBuff 中的特定格式数据取出,非特定格式数据则会留在stdinBuff 中;第二次循环难道不会直接跳过\n,直接读取2,然后将\n留在队列中?
2020-08-10 21:13
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
得分:0 
回复 3楼 孙宇道
没有这样神奇的功能

https://zh.
2020-08-11 11:33
孙宇道
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2020-8-10
得分:0 
回复 4楼 lin5161678
大神的意思是每次读取stdinbuf中的数据都会使不符合格式的数据先出栈?
2020-08-11 14:28



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-502804-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.123136 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved