C语言中scanf的用法和注意事项

scanf概念

scanf是格式输入函数,功能是在屏幕上输入指定的信息。简单的来说和printf相似却不相同。
scanf调用格式: scanf("<格式化字符串>",<地址表>);
如:
#include <stdio.h>
int main()
{
int a,b,c;
printf(“input three data:\n”);//使用 scanf 之前先用 printf 提示输入。
scanf("%d%d%d",&a,&b,&c); // scanf 的“输入参数”中,前面的取地址符&记住
printf("%d,%d,%d/n",a,b,c);
return 0;
}
运行时按如下方式输入三个值:
3□4□5↙(输入a,b,c的值)
3,4,5 (printf输出的a,b,c的值)
(1) &a、&b、&c中的&是地址运算符,分别获得这三个变量的内存地址。
(2) "%d%d%d"是按十进值格式输入三个数值。输入时,在两个数据之间可以用一个或多个空格、tab键、回车键分隔。
以下是合法输入方式:
① 3□□4□□□□5↙
② 3↙
4□5↙
③ 3(tab键)4↙
5↙

我们常用到的字符串有:
%c 读入一个字符。
%d 读入十进制整数。
%f 用来输出实数,以小数形式输出。
%lf 用来输出实数,以更长的小数形式输出。

分享下学习中明白的注意点:
1 当定义一个字符变量时,在键盘上输入一个scanf会吸收回车和空格字符,为了进行代码的可行性需在函数结束前加函数getchar()进行吸收。例如:
定义一个字符z,是scanf是从键盘上获取一个值。因为我们定义的是一个字符,所以将键盘上所有获得的字符赋值给z,而空格和回车也是字符,会影响字符赋值给z,所以要在末尾加个getchar()函数进行吸收。
没加getchar():

程序第二次进行运算时回车成了运算符了。

正确结果是:

2 scanf函数中的“格式控制”后面应当是变量地址,而不是变量名。例如,若a和b为int型变量,如果写成scanf("%f%f%f",a,b,c)是错误的。

scanf 的使用小结:
1 在 scanf 的“输入参数”中,变量前面的取地址符&不要忘记。
2 scanf 中双引号内,除了“输入控制符”外什么都不要写。
3 “输出控制符”和“输出参数”无论在“顺序上”还是在“个数上”一定要一一对应。
4 “输入控制符”的类型和变量所定义的类型一定要一致。对于从键盘输入的数据的类 型,数据是用户输入的,程序员是无法决定的,所以在写程序时要考虑容错处理。
5 使用 scanf 之前先用 printf 提示输入。

c语言scanf用法相关推荐

  1. 牛客网循环输入输出测试——C语言scanf和printf用法

    在实际的编程中需要自己写出完整的程序,预留好输入的接口,使用while循环接收多个测试用例,C语言在输出时printf要用换行"\n". 字符串输入输出问题见博客:牛客网字符/字符 ...

  2. c语言scanf s用法,C语言scanf与scanf_s

    C语言scanf与scanf_s0 我打编译器是microsoft visual studio 2005,我的源程序如下,注意注释的地方,就是scan函数中的scanf_s函数,程序运行正常,但是当输 ...

  3. c语言中数组部分输入赋值,c语言scanf对数组赋值

    c语言动态数组赋值,,c语言结构体数组赋值,c语言scanf对数组赋值 c语言数组动态赋值,<手把手教你学51单片机-C语言>之六 中断与数码管动态显示,c语言结构体数组赋值,c语言sca ...

  4. C语言continue用法

    C语言continue用法 continue只是跳出当前循环,并不会跳出整个while循环. For example: 建立 showchar2.c 1 #include <stdio.h> ...

  5. c语言scanf运行出现吃回车,scanf读取回车

    c语言 scanf 和 读取回车 我想用scanf读文件( program scanf()能把回车键读进去吗?数组能赋予回车值吗? //可以读入回车符,也可以给数组赋值 //具体看下例 #includ ...

  6. c语言goto语句标号作用,goto语句怎么用(c语言goto用法)

    goto语句怎么用(c语言goto用法) 2020-07-28 02:03:29 共10个回答 1.C语言中goto又叫无条件转移语句,可以让程序直接跳转到任意标记的位置.用法就是"goto ...

  7. c++中string和c语言string用法总结

    实例引出: 这个一个字符变换的题目:需要把输入的含有Q加数字的变为对应的Text+个数的形式: 输入样例为: abddaQ123werQ1234 输出为:abddaText1werText2 我在编写 ...

  8. c语言中的printf怎么用,printf怎么用(c语言printf用法)

    printf怎么用(c语言printf用法) 2020-07-28 02:35:57 共10个回答 printf(pbuff[i]);修改为printf("%s",pbuff[i]);printf(p ...

  9. c语言指针用法有哪些

    c语言指针用法: 一,指针定义: 指针变量的取值范围取值0~4G,是一种数据类型(无符号整数,代表了内存编号).它可以用来定义变量(与int.long一样),与int.long不同的它存储整数代表了内 ...

  10. C语言STATIC用法

    C语言STATIC用法 转自:http://blog.csdn.net/vagrantisme/article/details/4083722       1. static 变量 静态变量的类型 说 ...

最新文章

  1. Java统计1到300_java程序员的从0到1:统计某字符串在某文件中出现的次数(面试题)...
  2. 使用OpenSSL实现证书操作
  3. kaggle比赛模型融合指南
  4. Scrapy介绍及入门
  5. js特效 在服务器显示变形,使一行文字变形产生弯曲弧度特效的jQuery插件 - Arctext.js...
  6. css 带轮廓的圆,CSS3 圆球轮廓动画
  7. 如何使用Java和XML Config在Spring Security中启用HTTP基本身份验证
  8. linux边看系统信息,Linux查看系统信息大全[备忘]
  9. go去掉最后一个字符_Go语言去除字符串中的指定字符
  10. grandle下载安装图解
  11. 计算机计算能力共享,如何共享计算机的计算能力?
  12. 哈希表和红黑树的对比
  13. openstack 排错
  14. IntelliJ IDEA 的项目配置和Web部署,终于搞懂了!
  15. Git - 教程(廖雪峰)
  16. Tolua使用笔记(上)
  17. JDK1.8 下载及安装步骤
  18. leetcode刷题java之739. 每日温度
  19. net core 微服务 快速开发框架 Viper 初体验
  20. MOTO不相信眼泪!艰难回归!你,准备好了吗?

热门文章

  1. 广告配音免费制作软件让你轻松完成广告配音
  2. sophix热修复技术了解
  3. Oracle数据库新增字段
  4. SpringAop实现原理
  5. 腔体缝隙天线[搬运]
  6. 如何下载微信公众号里面的视频?
  7. TA入门笔记(十五)
  8. VAST2 0视频广告投放解决方案改变视频网站未来技术格局
  9. 轻量级协作机器人到仿人机器人的关键技术演进及生态共建
  10. Transformations in signals and systems DSP