鱼C论坛

 找回密码
 立即注册
查看: 1612|回复: 2

《带你学C带你飞》中scanf函数疑问

[复制链接]
发表于 2022-4-11 17:13:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在带你学C带你飞中,关于scanf函数的描述是这样的

其中提到:空白字符:该函数将读取并忽略空白字符(空白字符包含空格、回车和制表符);

而我写了个代码测试了一下scanf自己会不会读取空白字符(比如空格字符):
#include <stdio.h>
#include <stdlib.h>

int main()
{
    char ch;

    printf("请输入字符:");
    scanf("%c", &ch);
    printf("%d\n", ch);

    return 0;
}

结果是这样显示的:

这就说明scanf函数是可以读取空格字符的,那为什么会有“该函数将读取并忽略空白字符”的描述?

scanf函数的描述

scanf函数的描述

测试程序的结果

测试程序的结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-11 22:43:50 | 显示全部楼层
首先  空白字符包含空格、制表符 都是字符吗?
既然是字符,为什么%c , %s不能读取?


空白字符:该函数将读取并忽略空白字符(空白字符包含空格、回车和制表符);
是针对非字符格式而言,如%d,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-12 10:12:51 | 显示全部楼层
关于这个问题,从昨天的作业中我有一个猜想

数组那一节的作业有一道题是这样的

而那道题答案给出的代码中有一段这样的代码:
printf("请输入你的生日(如1988-05-20):");
scanf("%d-%d-%d", &year1, &month1, &day1);

我们再回头看scanf函数的说明:

划线部分解释了为什么上面那段代码中%d和%d之间要加 '-' 这样的短横线

那么关于忽略空白字符是不是如果我的scanf这么写:
scanf("%d %d %d", &year1, &month1, &day1);

所谓的忽略空白字符是忽略我在scanf函数的括号中的%d和%d中间输入的空格,而不是键盘缓冲区中存储的代表空格的字符。

这是我根据作业答案的一个猜想,究竟是不是这样的还请大佬解答。

数组的作业要求

数组的作业要求

scanf函数的说明

scanf函数的说明
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-5 18:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表