scanf详解
思维导图

注意事项
scanf函数不会有任何的类型转换, 所以我们一定要使用正确的格式控制符来进行接收参数!
scanf并不会认为输入的内容可以转换当它发现当前缓冲区内的内容与格式控制符不同时, 它会
放弃写入, 缓冲区的内容不会发生变化.
scanf函数不是一个安全的函数, 它的不安全来源于:
1.输入内容必须和控制符完全对应
2.会造成缓冲区溢出, 推荐scanf_s函数scanf在读取字符串的时候, 是按照
空格来分隔的.
scanf在读取数据的时候, 是完全按照格式控制字符串来进行匹配的.也就是说, 我们必须拿着scanf规定的
相同的类型,相同的格式才能按照我们的想法输入到我们指定的变量之中.scanf("%d %d", &iVal1, &iVal2);, 在这句话中, 我们输入10 10就能进行正确的读取.
如果我需要让用户输入指定个数的整数, 那么我们使用%d%d%d这样的方式是最安全的!
缓冲区内的内容被读取后, 被读取的内容会消失.
作业
1. 不运行代码写出下面语句的执行结果:(未知的值请写出未知理由及原因)
printf("%2.2lf", 2.33333);
printf("%c%c%c", 'A', '49', '\44');
printf("%10+-.3lf", 3.1415927);
2. 请写出下列各项的转换说明符:
1).宽度和位数相同的十进制整数
2).232.666, 使用0填充至10位
3).宽度为30, 左对齐的字符串
4).宽度为12的十六进制的整数
5).宽度为15的unsigned long的整数
6).宽度为7, 左对齐, 字符串中的前5个字符.
3. 请写出读取下列内容的转换说明符
1). 10109
2). 22.1111
3). ILoveMark
4). I Love Mark (要求一次性读取完成)
5). if 22 (只读取数值)
4. 编程练习
1). 提示用户以 "姓 名" (英语)的格式输入, 用 "名姓" 的方式打印.
2). 同上题输出
a). 包括双引号的姓名("姓 名")
b). 打印宽度为20, 左端打印.
3). 要求用户输入当前带宽(MB)以及所需要下载文件的大小(GB), 计算出所需要的时间(小时), 公式为: 需要下载的大小(MB)/(带宽大小/10)=需要的秒数
4). 使用头文件和宏打印出所有基础类型的最大值和最小值. 如有错误,请提出指正!谢谢.
本文由 花心胡萝卜 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: 2016-10-06 at 03:17 pm