字符串输入的2种常用方法详解

这篇具有很好参考价值的文章主要介绍了字符串输入的2种常用方法详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.scanf函数

int main()
{
	char arr[50] = { 0 };
	scanf("%s", arr);
	printf("%s", arr);
	return 0;
}

这种方法可以输入字符串,但是只能输入一个词,遇到空格就结束了。,空格之后的字符,会留在缓冲区,等待下次读入。
字符串输入的2种常用方法详解

如果我们要使用scanf函数来输入的话,有没有办法呢?
答案:有的。

1.扫描集

除了转换修饰符 s 以外,也可以使用“扫描集”(scanset)修饰符来读取字符串它由方括号所包含的一串无序字符组成([scanset])。scanf()函数接着读取所有字符,然后将它们存储为一个字符串(带有字符串终止符),直到遇到不匹配扫描集中任一字符时才停止。

int main()
{
	char arr[50] = { 0 };
	scanf("%[123456789]", arr);
	printf("%s", arr);
	return 0;
}

字符串输入的2种常用方法详解

此时我们会发现一个问题,就是扫描集只能识别扫描集里面的字符。
不过没关系,我们只需要改动一点点就行,这样不行的话,我们就反着来。

2.逆向使用扫描集

逆向使用转换扫描集(也就是说,除扫描集中的字符外,其他都符合),做法是在扫描集的左括号后面加上一个插入号(^)。

int main()
{
	char arr[50] = { 0 };
	// \n是按下回车后输入的,[^\n] 的意思是 除了\n之外的字符
	scanf("%[^\n]", arr); //字符串末尾有\0
	printf("%s", arr);
	return 0;
}

字符串输入的2种常用方法详解

字符串输入的2种常用方法详解

使用scanf时,最后的\n(按下回车时输入的)会遗留在缓冲区中,如果使用scanf,则需要使用gerchar()将缓冲区的Enter吃掉

二.gets函数

	char arr[50] = { 0 };
	gets(arr);  //末尾有\0
	puts(arr);

字符串输入的2种常用方法详解
使用 gets() 时,系统会将最后“敲”(Enter)的换行符从缓冲区中取出来,然后丢弃,所以缓冲区中不会遗留换行符

总结:
1 .我个人认为使用gets()函数比较方便,同时缓冲区中还不会遗留数据。
2.如果要使用scanf()函数,那么使用逆行扫描集会好很多,同时也需要注意缓冲区中的\n文章来源地址https://www.toymoban.com/news/detail-443055.html

到了这里,关于字符串输入的2种常用方法详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算字符串长度的三种方法(库函数 指针 )【详解】

    求字符串长度简单来说就是计算一个字符串(字符数组)中元素的个数即从数组头部计数,直到遇到字符串’\\0’结束符为止, 计数结果不包括’\\0’. C语言中的库函数strlen,它包含于string.h中,因此我们需要在使用前添加头文件 ,具体用法如下: strlen从数组头部计数,直到遇到字

    2024年02月06日
    浏览(90)
  • 【C&C++】为什么 scanf 函数在读取字符串时不需要用取地址运算符 &

    在C语言中,字符串实际上是字符数组,所以我们可以使用 scanf 函数来读取字符串。但是,需要注意的是, scanf 在读取字符串时会在遇到空格、制表符或换行符时停止。因此,它不能用于读取包含空格的字符串。 以下是使用 scanf 读取字符串的基本示例: 在这个例子中,我们

    2024年01月20日
    浏览(47)
  • 【MySQL学习4:单行输入函数——数值函数 和 字符串函数】

    之前做的笔记都在有道云,之后会一点点将以前的笔记分享出来~ (配图在笔记中查看) 书写顺序: where order by limit 执行顺序: from where select order by 一、数值函数 基本操作的数值函数 其中1为“天花板”函数,2和3叫做“地板”函数,可以画两条线来理解。 随机数函数 (

    2024年02月08日
    浏览(55)
  • C语言:写一个函数,求字符串的长度,在main函数中输入字符串并输出其长度(指针)

    分析:    在程序中,定义一个函数 fix,该函数使用指针变量来访问字符串中的每个字符,并计算出字符串的长度。fix 函数的参数为指向 char 类型的指针变量 p,表示需要计算长度的字符串。   在主函数 main 中,定义一个大小为 20 的字符数组 a,用于存储输入的字符串。然

    2024年01月21日
    浏览(73)
  • 编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。

    题目: 编写一个函数 ,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数, 在主函数中输入字符串以及输出上述的结果。 根据题目要求,来编写程序。 首先,确定主函数部分。其中d=digit数字、s=space空格、l=letter字母、o=other其他字符。 注意:因

    2024年02月04日
    浏览(73)
  • PHP 字符串常用函数

    strlen 获取指定字符串长度 语法: strpos 用于查找指定字符串,在源字符串 首次 出现的位置(下标),如果没找到则返回 false 注: 大小写不敏感 语法: strrpos 用于查找指定字符串,在源字符串 最后 出现的位置(下标),如果没找到则返回 false 注: 大小写不敏感 语法: st

    2024年02月06日
    浏览(45)
  • Python字符串的常用函数

    Python中用于操作字符串的函数有很多,以下是一些常用的函数及其用法: 1. len():返回字符串的长度    ```    s = \\\"hello, world!\\\"    print(len(s)) # 13    ``` 2. str():将对象转换为字符串类型    ```    n = 123    s = str(n)    print(s) # \\\"123\\\"    ``` 3. upper():将字符串中所有字母都转换

    2024年02月10日
    浏览(46)
  • 编写函数,判断一个字符串是否是回文。在主函数中输入一个字符串,调用自定义函数,输出结果。 所谓回文是指顺读和倒读都一样的字符串。如“AMNMA“是回文。

    编写函数,判断一个字符串是否是回文。在主函数中输入一个字符串,调用自定义函数,输出结果。 所谓回文是指顺读和倒读都一样的字符串。如\\\"AMNMA\\\"是回文。 测试输入:abcba 测试输出:是回文! 这道题要求编写一个函数来判断一个字符串是否是回文,并在主函数中调用该

    2024年02月03日
    浏览(64)
  • PostgreSQL常用字符串分割函数整理

    SPLIT_PART() 函数通过指定分隔符分割字符串,并返回第N个子串。语法: SPLIT_PART(string, delimiter, position) string : 待分割的字符串 delimiter:指定分割字符串 position:返回第几个字串,从1开始,该参数必须是正数。如果参数值大于分割后字符串的数量,函数返回空串。 示例:SELEC

    2024年02月08日
    浏览(33)
  • 字符函数和字符串函数上篇(详解)

    ❤️ 作者简介 :RO-BERRY 致力于C、C++、数据结构、TCP/IP、数据库等等一系列知识,对纯音乐有独特的喜爱 📗 日后方向 : 偏向于CPP开发以及大数据方向,如果你也感兴趣的话欢迎关注博主,期待更新 C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的

    2024年02月16日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包