《带你学C带你飞》中scanf函数疑问
在带你学C带你飞中,关于scanf函数的描述是这样的其中提到:空白字符:该函数将读取并忽略空白字符(空白字符包含空格、回车和制表符);
而我写了个代码测试了一下scanf自己会不会读取空白字符(比如空格字符):
#include <stdio.h>
#include <stdlib.h>
int main()
{
char ch;
printf("请输入字符:");
scanf("%c", &ch);
printf("%d\n", ch);
return 0;
}
结果是这样显示的:
这就说明scanf函数是可以读取空格字符的,那为什么会有“该函数将读取并忽略空白字符”的描述? 首先空白字符包含空格、制表符 都是字符吗?
既然是字符,为什么%c , %s不能读取?
空白字符:该函数将读取并忽略空白字符(空白字符包含空格、回车和制表符);
是针对非字符格式而言,如%d, 关于这个问题,从昨天的作业中我有一个猜想
数组那一节的作业有一道题是这样的
而那道题答案给出的代码中有一段这样的代码:
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中间输入的空格,而不是键盘缓冲区中存储的代表空格的字符。
这是我根据作业答案的一个猜想,究竟是不是这样的还请大佬解答。
页:
[1]