一、scanf()和gets()

1.scanf()

所在头文件:stdio.h

语法:scanf(“格式控制字符串”,变量地址列表);

接受字符串时:scanf(“%s”,字符数组名或指针);

2.gets()

所在头文件:stdio.h

语法:gets(字符数组名或指针);

两者在接受字符串时:

1.不同点:

scanf不能接受空格、制表符Tab、回车等;

而gets能够接受空格、制表符Tab和回车等;

scanf :当遇到回车,空格和tab键会自动在字符串后面添加’\0’,但是回车,空格和tab键仍会留在输入的缓冲区中。

gets:可接受回车键之前输入的所有字符,并用’\0’替代 ‘\n’.回车键不会留在输入缓冲区中

#include

int main()

{

char a[10];

scanf("%s",a);

printf("%s\n",a);

return 0;

}1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

从键盘输入字符串 asd df时,遇到空格,scanf()就认为输入结束了,所以a中存放的字符串是 ‘asd\0’。

#include

int main()

{

char a[10];

gets(a);

printf("%s\n",a);

return 0;

}1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

从键盘输入字符串 asd df时,gets()遇到’\n’才认为是结束输入了,所以a中存放的是’asd df\0’。

#include

int main()

{

char a[10],b[10];

char c,d;

scanf("%s",a);

printf("a中保存的字符串为:%s\n",a);

c=getchar();

printf("c中保存的字符为:%c ",c);

gets(b);

printf("b中保存的字符串为:%s\n",b);

d=getchar();

printf("d中保存的字符为:%c",d);

return 0;

}1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

输入asdf回车,因为scanf会将回车保留在缓冲区中,所以回车会紧接着被c取得而不需要再额外输入,所以a中存储的是’asdf\0’,字符c=’\n’。结果如下:

接着输入as df回车,因为gets会将’\n’替换成’\0’,所以b字符串中保留的是’as df\0’,并且还是要继续输入d的值:

最后输入d的值:

二、printf()和puts()的区别

相同点:

两者都属于stdio.h这个头文件

都能输出字符串

不同点:

puts()在输出字符串时会将’\0’自动转换成’\n’进行输出,也就是说,puts方法输出完字符串后会自动换行。

这一组比较简单,就不再举例子了。

C语言scanf中%%,C语言scanf()和gets()及printf()和puts()的区别相关推荐

  1. vscode怎么运行verilog语言_VScode中不同语言使用不同字体,如C/C++,VHDL

    VScode中不同语言使用不同字体. 问题背景:C/C++语言可以使用连体Fira code,  而VHDL语言<=作为赋值语句显然不能连体显示为小于等于 想达到的效果: VHDL <=原 ...

  2. f2812的c语言与标准c语言,F2812中C语言调用汇编函数

    F2812中C语言调用汇编函数 参考资料: (1) SPRU514 ---- TMS320F28x Optimizing C/C++ Compiler User's Guide.pdf; (2) sp ...

  3. 延时作用是什么意思c语言,单片机中C语言延时函数

    原标题:单片机中C语言延时函数 延时程序计算2009-11-02 22:15单片机C语言延时程序用C语言写出来程序非常的简练,它是一种模块化的语言,一种比汇编更高级的语言,但是就是这样一种语言也还是有 ...

  4. c语言程序中u8是什么意思,c – __u8和uint8_t之间的区别

    有人可以解释uint8_t和__u8类型之间的区别吗? 我知道uint8_t是在stdint.h中定义的,并且它们在每个unix系统上都可用. /* Unsigned. */ typedef unsi ...

  5. 【c语言】printf和scanf中* # %g的作用

    写这一片博客是因为在写题的时候遇到了一些相关的麻烦 一.printf和scanf中* 的作用 scanf *在scanf中起到过滤的作用,就比如写入了三个数,而就只想要中间的数,那我们就可以应用 * ...

  6. 课程教学c语言遇到的问题,C语言教学中的几点思考

    C语言教学中的几点思考 马稳 (西安科技大学计算机学院,陕西.西安,710054) 摘要: 本文针对作者在<C语言程序设计>教学常遇到的一些问题作了思考,从教学中使用的教学手段.教学方法和 ...

  7. 检查各计算机所属工作组ip,如何在Win8.1/RT 8.1中添加语言或键盘

    通过添加语言,你可以更改用于在 Windows.应用和 Web 中读取和写入的语言. 添加语言 若要更改你的 Windows 显示语言或者添加键盘以进行键入,首先要将一种语言添加到语言列表中. 从屏幕 ...

  8. ~scanf中~的意思

    ~scanf中~的意思 scanf返回值的取值范围是大于等于-1的整数.只有返回值为EOF时,其取反的的值,即while循环的判断条件才为0 才能结束循环(-1的补码表示全是1,按位取反后全是0,即为 ...

  9. C语言scanf fgets,C语言中输入函数(scanf()、fgets()和gets())的区别详解

    前言 大家都知道在C语言中,有三种主要的输入函数:scanf(),fgets()以及gets().他们的使用方法及注意事项如下: 1.scanf() 它是一种格式化的输入方式,可一次性按照规定的格式输 ...

  10. scanf在c语言中的作用是什么?

    scanf()函数 scanf()是C语言中的一个输入函数.与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include .(在有一些实现中,printf ...

最新文章

  1. 在 Google Go Team 工作是一种怎样的体验?
  2. 二叉树节点间的最大距离
  3. canvas学习绘制扇形
  4. 结对-贪吃蛇游戏-设计文档
  5. Dapr牵手.NET学习笔记:开篇
  6. 淘宝网的技术发展史(一)——个人网站时代
  7. winfrom实现简单计算器V2版本
  8. 利用RecyclerView实现无限轮播广告条
  9. 97.用好浏览器的缓存
  10. JAVA项目面试总结 电商系统 OA办公系统 P2P网贷
  11. 关于Toast的一些常见操作
  12. XP Embedded 蓝屏错误 Stop 0x0000007B
  13. 父子组件传值之(子传父)
  14. matlab GUI 绘图 坐标轴控件
  15. 2017年技术教练认证流程回顾
  16. arguments的用法(介绍)
  17. TypeScript14 - 泛型
  18. php urlencode()函数详解
  19. 密码管理软件:Keepass2Android-1.09a-r3
  20. local_umask=022是什么意思?

热门文章

  1. pycharm 中Python 模板的自动生成
  2. 查看mysql二进制日志
  3. Solaris Boot PROM 指令
  4. System.Trunc、System.Round、System.Int - 返回整数部分
  5. 38. Element cloneNode() 方法
  6. 米尔电子i.MX8开发板评测
  7. 三星Galaxy note I9220 系统廋身
  8. “购物比价类”Target SDK≥26优秀应用展示
  9. Arthas安装问题
  10. python 1 面向对象基础知识