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

励北网
励北网

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

来源:小易整编  作者:小易  发布时间:2023-03-24 02:40
摘要:scanf在C语言中的作用,scanf函数用法如果你想让自己的输入更加炫酷、更加个性化、更加安全,那么还需要学习scanf()的高级用法,这才是大神和菜鸟的分水岭。好了,言归正传,我们分三个方面讲解scanf()的高级用法。1)指定读取长度...
abcdefgh↙
abcd

输入示例 ②:

baccbaxyz↙
baccba

使用连接符
为了简化字符集合的写法,scanf() 支持使用连字符-来表示一个范围内的字符,例如 %[a-z]、%[0-9] 等。

连字符左边的字符对应一个 ASCII 码,连字符右边的字符也对应一个 ASCII 码,位于这两个 ASCII 码范围以内的字符就是要读取的字符。注意,连字符左边的 ASCII 码要小于右边的,如果反过来,那么它的行为是未定义的。

常用的连字符举例:

%[a-z]表示读取 abc...xyz 范围内的字符,也即小写字母;
%[A-Z]表示读取 ABC...XYZ 范围内的字符,也即大写字母;
%[0-9]表示读取 012...789 范围内的字符,也即十进制数字。

你也可以将它们合并起来,例如:

%[a-zA-Z]表示读取大写字母和小写字母,也即所有英文字母;
%[a-z-A-Z0-9]表示读取所有的英文字母和十进制数字;
%[0-9a-f]表示读取十六进制数字。

请看下面的演示:

#include <stdio.h>
int main(){
char str[30];
scanf("%[a-zA-Z]", str); //只读取字母
printf("%s\n", str);
return 0;
}

输入示例:

abcXYZ123↙
abcXYZ

不匹配某些字符
假如现在有一种需求,就是读取换行符以外的所有字符,或者读取 0~9 以外的所有字符,该怎么实现呢?总不能把剩下的字符都罗列出来吧,一是麻烦,二是不现实。

C语言的开发者们早就考虑到这个问题了,scanf() 允许我们在%[ ]中直接指定某些不能匹配的字符,具体方法就是在不匹配的字符前面加上^,例如:

%[^\n]表示匹配除换行符以外的所有字符,遇到换行符就停止读取;
%[^0-9]表示匹配除十进制数字以外的所有字符,遇到十进制数字就停止读取。

请看下面的例子:

#include <stdio.h>
int main(){
    char str1[30], str2[30];
    scanf("%[^0-9]", str1);
    scanf("%*[^\n]"); scanf("%*c"); //清空缓冲区
    scanf("%[^\n]", str2);
    printf("str1=%s \nstr2=%s\n", str1, str2);
    return 0;
}

输入示例:

abcXYZ@#87edf↙
c c++ java python go javascript↙
str1=abcXYZ@#
str2=c c++ java python go javascript

请注意第 6 行代码,它的作用是读取一行字符串,和 gets() 的功能一模一样。你看,scanf() 也能读取带空格的字符串呀,谁说 scanf() 不能完全取代 gets(),这明显是错误的说法。

另外,scanf() 还可以指定字符串的最大长度,指定字符串中不能包含哪些字符,这是 gets() 不具备的功能。

例如,读取一行不能包含十进制数字的字符串,并且长度不能超过 30:

#include <stdio.h>
int main(){
char str[31];
scanf("%30[^0-9\n]", str);
printf("str=%s\n", str);
return 0;
}

输入示例 ①:

http://c.biancheng.net http://biancheng.net↙
str=http://c.biancheng.net http://

输入示例 ②:

I have been programming for 8 years.↙
str=I have been programming for

3) 丢弃读取到的字符

在前面的代码中,每个格式控制符都要对应一个变量,把读取到的数据放入对应的变量中。其实你也可以不这样做,scanf() 允许把读取到的数据直接丢弃,不往变量中存放,具体方法就是在 % 后面加一个*,例如:

%*d表示读取一个整数并丢弃;
%*[a-z]表示读取小写字母并丢弃;
%*[^\n]表示将换行符以外的字符全部丢弃。

请看下面的代码演示:


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


百科问答
小编:小易整编
相关文章相关阅读
  • 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、传输文件传输文件,这一功能应该是大家最熟悉...

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

精彩推荐