专业汉语词典知识平台,分享汉字词语知识、历史文学知识解答!

励北网
励北网

scanf在C语言中的作用,scanf函数用法

来源:小易整编  作者:小易  发布时间:2023-03-24 02:40
摘要:scanf在C语言中的作用,scanf函数用法如果你想让自己的输入更加炫酷、更加个性化、更加安全,那么还需要学习scanf()的高级用法,这才是大神和菜鸟的分水岭。好了,言归正传,我们分三个方面讲解scanf()的高级用法。1)指定读取长度...
#include <stdio.h>
int main(){
int n;
char str[30];
scanf("%*d %d", &n);
scanf("%*[a-z]");
scanf("%[^\n]", str);
printf("n=%d, str=%s\n", n, str);
return 0;
}

输入示例:

100 999abcxyzABCXYZ↙
n=999, str=ABCXYZ

对结果的分析:整数 100 被第一个 scanf() 中的%*d读取后丢弃了,整数 999 被第%d读取到,并赋值给 n。此时缓冲区中剩下 abcxyzABCXYZ,第二个 scanf() 将 abcxyz 读取并丢弃,剩下的 ABCXYZ 被最后一个 scanf() 读取到并赋值给 str。

大家有没有意识到,将读取到的字符直接丢弃,这就是在清空输入缓冲区呀,虽然有点蹩脚,但是行之有效。在C语言基础——清空缓存区 中我们已经给出了使用 scanf() 清空缓冲区的方案,就是:

scanf("%*[^\n]"); scanf("%*c");

下面我们就来解释一下。

首先需要明白的是,等到需要清空缓冲区的时候,缓冲区中的最后一个字符一定是换行符\n,因为输入缓冲区是行缓冲模式,用户按下回车键会产生换行符,结束本次输入,然后输入函数开始读取。

scanf("%*[^\n]");将换行符前面的所有字符清空,scanf("%*c");将最后剩下的换行符清空。

有些网友将这两条语句合并起来,写作:

scanf("%*[^\n]%*c");

这是错误的。合并以后的语句不能清空单个换行符,因为该语句要求换行符前边至少要有一个其它的字符,单个换行符会导致匹配失败。

总结

scanf() 控制字符串的完整写法为:

%{*} {width} type

其中,{ } 表示可有可无。各个部分的具体含义是:

type表示读取什么类型的数据,例如 %d、%s、%[a-z]、%[^\n] 等;type 必须有。
width表示最大读取宽度,可有可无。
*表示丢弃读取到的数据,可有可无。

scanf 的使用看似细节繁杂,但使用起来非常简单。就目前而言,只要掌握以下五点:

在 scanf 的“输入参数”中,变量前面的取地址符&不要忘记。

scanf 中双引号内,除了“输入控制符”外什么都不要写。

“输出控制符”和“输出参数”无论在“顺序上”还是在“个数上”一定要一一对应。

“输入控制符”的类型和变量所定义的类型一定要一致。对于从键盘输入的数据的类型,数据是用户输入的,程序员是无法决定的,所以在写程序时要考虑容错处理,这个稍后再讲。

使用 scanf 之前先用 printf 提示输入。

————————————————

scanf() 格式控制符汇总

格式控制符

说明

%c

读取一个单一的字符

%hd、%d、%ld

读取一个十进制整数,并分别赋值给 short、int、long 类型

%ho、%o、%lo

读取一个八进制整数(可带前缀也可不带),并分别赋值给 short、int、long 类型

%hx、%x、%lx

读取一个十六进制整数(可带前缀也可不带),并分别赋值给 short、int、long 类型

%hu、%u、%lu

读取一个无符号整数,并分别赋值给 unsigned short、unsigned int、unsigned long 类型

%f、%lf

读取一个十进制形式的小数,并分别赋值给 float、double 类型

%e、%le

读取一个指数形式的小数,并分别赋值给 float、double 类型

%g、%lg

既可以读取一个十进制形式的小数,也可以读取一个指数形式的小数,并分别赋值给 float、double 类型

%s

读取一个字符串(以空白符为结束)

————————————————


本文地址:百科问答频道 https://www.neebe.cn/wenda/938790_3.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!

共3页 1 2 3 当前是最后一页

百科问答
小编:小易整编
相关文章相关阅读
  • Excel中countif函数的使用方法

    Excel中countif函数的使用方法

    Excel中有很多函数,很多都可以为我们大大减少计算的时间,一步就得出结果,很多朋友在使用countif函数时,会出现一些错误导致不成功,我们这就来给你详细讲讲countif函数是应该如何使用的。countif函数的含义...

  • SUBTOTAL函数怎么用?

    SUBTOTAL函数怎么用?

    操作方法01隐藏行汇总方法:在目标单元格输入公式:=SUBTOTAL(109,C3:C9)。02筛选汇总。方法:在目标单元格输入公式:=SUBTOTAL...

  • tts是什么意思?tts有什么功能作用

    tts是什么意思?tts有什么功能作用

    tts是什么意思,tts有什么功能作用?TTS的全称为TextToSpeech,即“从文本到语音”。它是同时运用语言学和心理学的杰出之作,在内置芯片的支持之下,通过神经网络的设计,把文字智能地转化为自然语音流。TTS技术对文本文件进行实...

  • 函数库是什么意思?

    函数库是什么意思?

    函数库是指由一组编写好的、结构化的可执行函数组成的库文件,其中的函数可以增加程序的通用功能以提升程序的运行效率,节省开发时间并提高软件的质量。函数库更常用于缩短编程时间、提供程序实现通用功能以及用于程序编写中特定功能的实现。函数库有帮助程...

  • nas是什么意思啊(nas的作用)

    nas是什么意思啊(nas的作用)

    NAS(网络附属存储)是一个数据存储设备,用户可以用来保存照片、视频、音乐和文档。NAS用户可以仅由自己使用,可以与家庭/朋友或同事之间的大型团体共享。也可以从移动设备和计算机访问NAS。与网盘云服务相比,NAS会提供更大的便利性和趣...

  • 用数学画图软件——Graph绘制函数图形

    用数学画图软件——Graph绘制函数图形

    Graph是一款开源类的绘制函数图像软件。它不仅能根据函数绘制其图像,还能够绘制曲线上的切线、法线和阴影等。除了绘制功能,它还具有计算功能,其中包括曲线长度、面积等的计算。下面我来给大家介绍一下如何使用Graph绘制函数图像。操作方法...

  • 电脑中esc键的作用(电脑esc是什么键)

    电脑中esc键的作用(电脑esc是什么键)

    在win7系统中,朋友们对键盘上的某些按键有哪些功能,还不是很了解。这次六哥来谈谈win7系统中ESC键的各种功能,保证朋友们使用更加便捷。ESC键的简介:电脑键盘上的Esc键诞生于1960年,位于电脑键盘的左上方,英文单词escape的缩...

  • 手机蓝牙的作用和用法(手机蓝牙有什么用途)

    手机蓝牙的作用和用法(手机蓝牙有什么用途)

    每部手机上都有一个蓝牙功能,大家以前都会用它来传输文件,不过随着移动网络和WiFi的普及,这个功能也渐渐被大家忽略了。今天,我们就来科普一些手机蓝牙不为人知的功能,让大家可以更好的使用这一功能。1、传输文件传输文件,这一功能应该是大家最熟悉...

  • 周排行
  • 月排行
  • 年排行

精彩推荐