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

您所在的位置:网站首页 scanf输入字符串遇到空格会自动过滤吗 关于在字符数组中利用scanf函数输入空格等问题

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

2024-01-02 03:19| 来源: 网络整理| 查看: 265

关于在字符数组中利用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 printf("%c\n\n",string[i]); } //输出为asdfa fasdf dsafe

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

char string[31]; for( int i=0;i printf("%c\n\n",string[i]); }

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3