- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在下面的程序中,如果我使用否定扫描集的行,如果我输入一个多词行(以 ENTER 或换行符结尾),即使换行符在否定列表中,它也能正常工作。
但是如果我改为使用扫描集的行并输入单词“aegis”(或任何带有辅音的单词),则会输出垃圾字符。类比第一种情况,输入这个词不应该至少输出“ae”吗?请解释 scanf() 的扫描集和否定扫描集的这种行为。
#include <stdio.h>
int main ()
{
char str[30];
printf("Enter the string\n");
//scanf("%[^\n]",str);
//scanf("%[aeiou]",str);
printf("%s",str);
}
最佳答案
是因为代码错误地没有检查scanf()
的返回值
printf("Enter the string\n");
scanf("%[^\n]",str);
scanf("%[aeiou]",str); // check result before using `str`
printf("%s",str);
与 scanf("%[^\n]",str);
然后输入 "123\n"
, str
获取 "123"
的值和'\n'
留在 stdin
。然后用 scanf("%[aeiou]",str);
然后输入 "aegis\n"
, 第一行的 '\n'
阻止将任何内容保存为 '\n'
不是元音,str
中没有保存任何内容由于代码没有检查 scanf()
的返回值, 没有意识到 str
可能无效。
1) 始终检查 scanf()
的返回值和家人。
if (scanf(some_format, var1, var2, ...) != ExpectedConversionCount) {
Fail();
}
2) scanf("%[^\n]",str);
读取一行会失败 3 件事:没有输入限制,如果该行仅包含 '\n'
则无法读取任何内容.不检查返回值,EOF
未检测到。
3) 使用fgets()
而不是 scanf()
用于用户输入。
关于c++ - 对于 scanf(),为什么否定的扫描集 "%[^\n]"显示 "\n"的正确输出,而不是 "%[aeiou]"的扫描集 "aegis"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33320729/
NOT RLIKE '^[aeiou].*[aeiou]$' 与 RLIKE '^[^aeiou].*[^aeiou]$' 有何不同 ? 我正在尝试在 hackerrank 上进行 mysql 练习,
我最近在接受采访,被问了很多问题,其中一个问题就是这个,我在尝试回答时遇到了一些麻烦。 给定一个字符串,找到出现时间最长的元音字母“aeiou”。元音子串不必连续,可以有重复。 目标是找到每个元音的最
我知道VIM支持二合字母,如果能配合:s命令使用就完美了,但是我找不到使用方法! 我想是这样的: :%s/\([aeiouAEIOU]\)'/\=digraph(submatch(1)."!")/g
我正在开发一个 C# Web 服务,其响应始终是事物的集合。因为我太懒了,不想显式定义事物的集合,所以我实现了一个泛型类,表示可以使用 XML 序列化的事物的集合。 现在,ASP.NET 通常会给泛型
看来 (a|e|i|o|u)? 和 [aeiou]? 的效果是一样的,不知道有没有显着的性能上的差异。 最佳答案 在您给出的示例中,使用类而不是交替有很大的好处。 例如: string 'abcde'
它忽略辅音。它忽略任何类型的空间。它忽略大小写。唯一不能忽略的是另一个元音出现顺序不正确。 这些计数: AEIOU, aeiou, hahehihohu, Take it out 这些不: AEIuO
无法从moodle下载带有西类牙口音(áéíóú)的文件,出现403错误,但口音在页面中正确显示。我使用的是 Moodle 2.4.3 和 CentOS 6.5,以及 mysql 和 apache 我
我正在看优秀的 Clojure 教程 here .在其中一个示例中,它具有以下几行的 Clojure 代码: (def vowel? (set "aeiou")) 这使得元音对元音返回真,对辅音返回假
我想匹配一个单词是否具有aeiou,并且必须按aeiou的顺序进行匹配。如果有一个不是单词的字符,也不应匹配。例如: 比赛: cabeilous 不匹配: sacrilegious jeious ca
在下面的程序中,如果我使用否定扫描集的行,如果我输入一个多词行(以 ENTER 或换行符结尾),即使换行符在否定列表中,它也能正常工作。 但是如果我改为使用扫描集的行并输入单词“aegis”(或任何带
我是一名优秀的程序员,十分优秀!