评论

收藏

[C++] 5大C语言输入函数知多少?

编程语言 编程语言 发布于:2021-08-06 13:13 | 阅读数:516 | 评论:0

DSC0000.gif


DSC0001.png                前言
上章节讲解了《C语言四大内置输出函数你知多少?C语言基本程序交互之输出到屏幕》,本栏目主要讲解C语言基本交互处理之输入篇。学会基本的输入和输出,大家就可以做一些简单的交互咯。

              C语言内置输入函数C语言提供了执行输入操作的内置函数。输入操作用于从键盘读取用户值(输入)。c语言提供以下内置输入功能:

  • scanf():标准输入
                
  • getchar():字符输入
                
  • getch():不可见,字符输入
                
  • gets():字符串输入
                
  • fscanf():格式化写入
                

                      C语言scanf函数
scanf函数三要素:

  • scanf用于从键盘读取不同数据类型的多个数据值。
                      
  • scanf需属于“ stdio.h ” 的头文件
                      
  • scanf使用#include<stdio>包含头文件
                      

1                                             scanf读取数据到变量
DSC0002.png

值得一提的是:vs中对这个函数做了一些修改,推荐使用更为安全的scanf_s 函数 
不想用在程序最上面加上宏定义去掉安全检查。
即:#define _CRT_SECURE_NO_WARNINGS
或者修改项目属性去掉SDL检查
DSC0003.png

当然你也可以使用他改进后的scanf函数,也就是scanf_s
2                                             scanf同时输入不同数据scanf输入不同数据的时候,采用不同的格式控制字符即可。注意的是通常scanf函数的格式控制字符是不需要精度控制的哦。如下测试代码:
DSC0004.png

C语言中格式控制字符常用的主要有以下:

  • int : %d
                      
  • float: %f
                      
  • double:%lf
                      
  • char:%c
                      
  • 字符串:%s
                      
  • 十六进制:%x
                      
  • 八进制:%o
                      
  • 指针类型:%p
                      
  • 无符号整形:%u
                      
还有一些比较少用的在这里就不列举不出来。
3                                             scanf函数的返回值scanf函数返回一个整数值,该值等于使用scanf函数读取的输入值的总数,如下测试代码:
DSC0005.png

4                      scanf函数的取值原理图
DSC0006.jpeg

从上图中的可以看到,当我们做一次完整输入的时候, 缓冲区中还存在一个\n字符 ,所以我们再做字符输入的时候经常存在跳过现象,如下图:
DSC0007.png

如何避免呢?清空缓冲区就好了,在字符或者字符输入之前清空缓冲区就好了,一般有以下函数:

  • setbuf(stdin,NULL);
                        
  • fflush(stdin);
                      
当然你也可以自己写代码避免,如下测试代码:
DSC0008.png


                  gechar函数getchar函数用于从键盘读取字符并将其返回给程序。此功能用于只读单个字符。要读取多个字符,我们需要多次写入或使用循环语句。考虑以下示例:

DSC0009.png

                         getc函数getch函数类似于getchar函数。getch函数用于从键盘读取字符并将其返回给程序。此功能用于只读单个字符。要读取多个字符,我们需要多次写入或使用循环语句。考虑以下示例程序:
DSC00010.png

注意点:

  • getch属于conio.h,即用前需#include <conio.h>
                      
  • vs中该函数要使用_getch
                     

                   gets函数gets函数用于读取一行字符串并将其存储到字符数组中。gets函数读取一行字符串或字符序列,直到换行符号进入。考虑以下示例程序:
DSC00011.png

注意点:

  • vs中该函数该函数改为gets_s ,增加一个长度参数
                        
上图代码中数组如果没有学习的同学后续文章将会详细讲解。

                   fscanf函数fscanf函数与文件的概念一起使用。fscanf函数用于从文件中读取数据值。如果要使用fscanf函数,必须在读取模式下打开文件,而键盘上可以使用stdin表示。故有以下案例:
DSC00012.png

这个更多的是格式化读写文件,后续章节会详细讲解

                  尾言本栏目作业:从键盘键入长方形的边信息,求解长方形的面积和周长,打印出面积和周长
DSC00013.jpeg




本文分享自微信公众号 - C语言编程基础(goodStudyCode)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。


关注下面的标签,发现更多相似文章