关于在字符数组中利用scanf函数输入空格等问题

控制串/数组 中的空白符使 scanf() 在输入流中跳过一个或多个空白行。空白符可以是空格(space)、制表符(tab)和新行符(newline)。 本质上,控制串中的空白符使 scanf() 在输入流中读,但不保存结果,直到发现非空白字符为止

ANSI C 标准向 scanf() 增加了一种新特性,称为扫描集(scanset)。 扫描集定义一个字符集合,可由 scanf() 读入其中允许的字符并赋给对应字符数组。 扫描集合由一对方括号中的一串字符定义,左方括号前必须缀以百分号。 例如,以下的扫描集使 scanf() 读入字符 A、B 和 C:
1.使用扫描集
%[ABC]
使用扫描集时,scanf() 连续吃进集合中的字符并放入对应的字符数组,直到发现不在集合中的字符为止(即扫描集仅读匹配的字符)。返回时,数组中放置以 null 结尾、由读入字符组成的字符串。
2.使用补集^
用字符 ^ 可以说明补集。把 ^ 字符放为扫描集的第一字符时,构成其它字符组成的命令的补集合,指示 scanf() 只接受未说明的其它字符。
对于许多实现来说,用连字符可以说明一个范围(ISO C99标准没有规定)。例如,以下扫描集使 scanf() 接受字母 A 到 Z:

**

利用扫描集 在字符数组中输出空格

**
scanf(“%[^\n]”,str); //str是数组首地址
scanf("%[^\n]",str); []中式正则表达式中的内容,^表示相反的情况,即 [\n]表示只接受\n [^\n]表示除了\n都接受,即也包括接受空格。

char string[31];
for( int i=0;i<30;i++){scanf("%[^\n]",&string[i]);}//输入asdfa fasdf  dsafe
for(i=0;i<30;i++){     printf("%c\n\n",string[i]);}//输出为asdfa fasdf  dsafe

若非利用扫描集则会与到空格符时就停止了输入

char string[31];
for( int i=0;i<30;i++){scanf("%c",&string[i]);}//输入asdfa fasdf  dsafe
for(i=0;i<30;i++){     printf("%c\n\n",string[i]);}

此时的输出为asdfa,而空格及空格之后的字符串没有被输入

关于在字符数组中利用scanf函数输入空格等问题相关推荐

  1. C语言:VS中利用scanf_s函数输入字符串时出错

    在vs中scanf函数中下图的代码正确,但是因为vs中scanf函数被认为不安全,现基本改用了scanf_s函数. #include<stdio.h> int main() {char a ...

  2. php 输出数组第一个元素,怎么在php中利用reset() 函数输出数组中的第一个元素

    怎么在php中利用reset() 函数输出数组中的第一个元素 发布时间:2021-01-16 09:37:11 来源:亿速云 阅读:66 作者:Leah 本篇文章给大家分享的是有关怎么在php中利用r ...

  3. 课后习题5.13 编写一程序,将两个字符串连接起来,结果取代第一个字符串。 (1)用字符数组,不用stract函数(即自己写一个具有stract函数功能的函数); (2)用标准库中的stract函数;

    课后习题5.13 编写一程序,将两个字符串连接起来,结果取代第一个字符串. (1)用字符数组,不用stract函数(即自己写一个具有stract函数功能的函数): (2)用标准库中的stract函数: ...

  4. 字符数组与字符串处理函数

    C语言中没有字符串类型,也没有字符串变量,字符串是存放在字符类型数组中的. 定义.初始化.引用字符数组 1.定义:用字符数组来存放字符数据,在字符数组中的一个元素内存放一个字符.定义方法与定义数值型数 ...

  5. 如何在字符数组中存储空白字符

    C没有为字符串定义专门的数据类型,而是把它存储在字符数组中,虽然这种方法可以有效地解决字符串存储问题,但当使用scanf函数为字符数组赋值时,含有空白符(空格.制表符.换行符)的字符串却无法完整储存. ...

  6. c语言怎么同时输入两个字符,解决C语言中使用scanf连续输入两个字符类型的问题...

    昨天用C编程,遇到一个关于scanf的细节问题,假如运行如下程序: #include int main() { char ch1,ch2; printf("Input for ch1:/n& ...

  7. 将字符数组中的字符按从小到大的顺序排序

    <程序设计基础实训指导教程-c语言> ISBN 978-7-03-032846-5 p143 7.1.2 上级实训内容 [实训内容10]编写一个函数,要求用字符数组名作为参数,函数功能是将 ...

  8. php中glob怎么用,如何在php中利用glob函数对文件进行遍历

    如何在php中利用glob函数对文件进行遍历 发布时间:2020-12-11 16:02:47 来源:亿速云 阅读:76 作者:Leah 如何在php中利用glob函数对文件进行遍历?相信很多没有经验 ...

  9. C语言-输入任意多个数字,存到整型数组,支持任意间隔符,同时支持输入字母存到字符数组中

    第一次在CSDN上写博客- 记录一下想了有那么久的,这串代码 起因是做应用密码学的作业时,有Vigenere密码的加密解密.仿射密码加密解密.Playfair算法.Hill密码 因为数据量比较大,要把 ...

最新文章

  1. Java对多线程的支持
  2. shell特殊符号cut命令 sort_wc_uniq命令 tee_tr_split命令 shell特殊符号
  3. HP小型机superdome配置MC双机、PV、VG、LV初体验
  4. IDE / Qt / 浅谈 qmake 之 pro、pri、prf、prl文件
  5. ORACLE:RETURNING 子句
  6. ORACLE中的MERGE语法使用记录
  7. 东方时尚网上约车的用户名密码是什么_网站制作要学什么、在现代网页设计中,动效常见的几种用法...
  8. 首信易支付 php,ZenCart首信易支付模块递交失败解决
  9. 用python来开发webgame服务端(3)
  10. 用计算机绘制颗粒级配曲线,EXcel如何绘制颗粒级配曲线图
  11. 第四讲:学习理论(Learning Theory)
  12. 数据量再大也不怕!笔记本电脑也可以分析 100GB 数据
  13. Python float基本用法
  14. android 乐固渠道打包,Jenkins奇技淫巧 — Python乐固,多渠道打包篇(Android自动化构建)...
  15. 【java】springboot项目启动数据加载内存中的三种方法
  16. oracle10.21数据库安装,安装并创建数据库【Oracle Database 10g】(三)
  17. 一起学Pandas系列基础篇---loc和iloc
  18. mysql8.018_MySQL8.0.18通用版本安装
  19. 【校招】面试_字节跳动_客户端开发工程师_一面
  20. 万维考试系统python题库答案_万维试题库系统官方下载

热门文章

  1. 经典面试题 :网络通信题目集锦
  2. 为什么有些人还是不接受蓝牙耳机?初级入门哪款蓝牙耳机适合
  3. Mysql的exist()用法
  4. 理论联系实际,如何认识人民群众在历史发展中的作用
  5. Appstore App转让流程
  6. 微信小程序开发之WXML模板语法
  7. 屏幕会摧毁孩子?无稽之谈!
  8. python音频播放问题解决方法
  9. PHP异步:fsockopen及swoole异步
  10. 关于华硕笔记本A400U进PE,改开机密码,硬盘无法识别的笔记