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