简单讲解c语言中各个输入输出函数使用场景与不同,填补你的知识盲区

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

C语言中有多个输入输出函数,各个输入输出函数可能因为运算方式的不同导致其形成差异,令他们的使用场景不同,我们大多数人可能只会使用他,却不懂他们其中的运算原理,现在就由我来给大家介绍一下各个输入输出函数,使你轻松掌握他们


一、日常见到最多的输入输出函数

1.scanfprintf的使用

A.scanf在我们日常使用中作为输入函数进行使用,在visual stdio中此函数被禁用了,要改成scanf_S或添加这一串句子才能使用:#define _CRT_SECURE_NO_WARNINGS。scanf作为输入时,可以争对各种类型的数据,整形,浮点型,字符都行,此函数读到空格或\n时停止;scanf只拿空格或\n前面的内容,并不会取出\n.

B.printf是最常见的输出函数,基本每个数据都能用printf来输入,没什么特别点,应用广泛,十分全面的一个输出函数

2.getcharputchar的使用

A.getchar表示字符的输入,每次输入一个字符;会读取\n,其返回的是ASCII码值,即返回的是int类型;与scanf的区别就是其只能输入一个字符,scanf都能输入;

B.putchar表示字符的输出,一般与getchar配合使用,写入时发生整形提升,且该值在内部转换为无符号字符。其库函数如下。

 

getchar是如何工作的呢?难道是键盘的直接输入,然后读取吗?

其实并不是,在键盘与getchar直接有个区域叫输入缓冲区,这个区域是真实存在的,当你输入a\n时,由于getchar一次只读取一个字符,他只会读取a,如果通过循环输入的话,就会有换行的效果,如下图。

此时输入b之后并不会直接输出,要输入\n,同时他也会给你换行。要停下来你只需按下ctrl z之后再按\n之后就能停下,如下图 。

 C.接下来说一道易错题相信它能让你更加了解getchar和putchar的内部原理及使用。

这我都没有输入T/F就已经判读错误了呢,这就是关于scanf和getchar内部运行原理的问题。

这里你从键盘上输入数据到输入缓冲区,一开始不是要输入密码:123456\n,此时密码在输入缓冲区中,如下图 

 此时由于scanf此函数读到空格或\n时停止;scanf只拿空格或\n前面的内容,并不会取出\n.此时123456被取出,输入缓冲区里还有\n,getchar看到输入缓冲区里还有\n,它就直接读取放在ch里面去了,导致没有输入,如下图。

可能现在有人就会说了,只要在前面加个getchar就行,这样不就把那个\n给取出了,不就正常输入了吗?这确实是一种解决方法,此时的确能输出了。

可是要是密码不输入数字呢,就比如123456    abc呢,这样会发生什么情况呢? 你们想的没错,果然失败了,此时就应该要一个循环去处理后面的字符,把他们一个一个取出。

 此时就是这个输入密码问题的完美答案了,要给它平方就是100分了,这就完美解决了,相信这能然各位更加了解getchar和scanf函数。

二.输入输出函数的进阶

1.getsputs的使用

A.gets表示从标准输入(函数)获取字符串,他跟scanf有点类似,不过它是输入读取字符串,同时它读到文件末尾或\n时停止;且只拿\n前面的内容.这一点跟scanf很像。但它也有比scanf好的地方,其输入较为整洁,且遇到空格不会停,也会读取,同时其读取到\n时会把它取出丢弃,并不会把它留在缓冲区,使得后面不用清理\n.

 如上面那道题,把scanf改成gets后就不用在消除\n了,这样就简洁了许多。

B.puts将字符串写入标准输出,该函数从指定的地址 (str) 开始复制,直到到达终止空字符 ('\0')。此终止空字符不会复制到流中。其库函数如下

 puts在显示字符串时,在末尾会自动补充\n,其仅能输入字符串和putchar一样具有局限性,不如printf使用广泛,这就是其一点小缺陷吧。

 

总结


以上就是今天要讲的内容,本文仅仅简单介绍了输入输出函数的使用,c语言中还有许多输入输出函数,学无止境,我还有许多不懂的地方,希望可以在这与大家共同进步。

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值