5大C语言输入函数知多少?
前言
上章节讲解了《C语言四大内置输出函数你知多少?C语言基本程序交互之输出到屏幕》,本栏目主要讲解C语言基本交互处理之输入篇。学会基本的输入和输出,大家就可以做一些简单的交互咯。
C语言内置输入函数
C语言提供了执行输入操作的内置函数。输入操作用于从键盘读取用户值(输入)。c语言提供以下内置输入功能:
scanf():标准输入
getchar():字符输入
getch():不可见,字符输入
gets():字符串输入
fscanf():格式化写入
C语言scanf函数
scanf函数三要素:
scanf用于从键盘读取不同数据类型的多个数据值。
scanf需属于“ stdio.h ” 的头文件
scanf使用#include
包含头文件
scanf读取数据到变量
值得一提的是:vs中对这个函数做了一些修改,推荐使用更为安全的scanf_s 函数
不想用在程序最上面加上宏定义去掉安全检查。
即:#define _CRT_SECURE_NO_WARNINGS
或者修改项目属性去掉SDL检查
当然你也可以使用他改进后的scanf函数,也就是scanf_s
scanf同时输入不同数据
scanf输入不同数据的时候,采用不同的格式控制字符即可。注意的是通常scanf函数的格式控制字符是不需要精度控制的哦。如下测试代码:
C语言中格式控制字符常用的主要有以下:
int : %d
float: %f
double:%lf
char:%c
字符串:%s
十六进制:%x
八进制:%o
指针类型:%p
无符号整形:%u
还有一些比较少用的在这里就不列举不出来。
scanf函数的返回值
scanf函数返回一个整数值,该值等于使用scanf函数读取的输入值的总数,如下测试代码:
从上图中的可以看到,当我们做一次完整输入的时候, 缓冲区中还存在一个\n字符 ,所以我们再做字符输入的时候经常存在跳过现象,如下图:
如何避免呢?清空缓冲区就好了,在字符或者字符输入之前清空缓冲区就好了,一般有以下函数:
setbuf(stdin,NULL);
fflush(stdin);
当然你也可以自己写代码避免,如下测试代码:
gechar函数
getchar函数用于从键盘读取字符并将其返回给程序。此功能用于只读单个字符。要读取多个字符,我们需要多次写入或使用循环语句。考虑以下示例:
getc函数
getch函数类似于getchar函数。getch函数用于从键盘读取字符并将其返回给程序。此功能用于只读单个字符。要读取多个字符,我们需要多次写入或使用循环语句。考虑以下示例程序:
注意点:
getch属于conio.h,即用前需#include
vs中该函数要使用_getch
gets函数
gets函数用于读取一行字符串并将其存储到字符数组中。gets函数读取一行字符串或字符序列,直到换行符号进入。考虑以下示例程序:
注意点:
vs中该函数该函数改为gets_s ,增加一个长度参数
上图代码中数组如果没有学习的同学后续文章将会详细讲解。
fscanf函数
fscanf函数与文件的概念一起使用。fscanf函数用于从文件中读取数据值。如果要使用fscanf函数,必须在读取模式下打开文件,而键盘上可以使用stdin表示。故有以下案例:
这个更多的是格式化读写文件,后续章节会详细讲解
尾言
本栏目作业:从键盘键入长方形的边信息,求解长方形的面积和周长,打印出面积和周长