使用scanf的字符串读取问题
|
现在我读了一些:
scanf()转换%[\\ n]将
匹配换行符,而
%[^ \\ n]将匹配所有字符,直到
换行符。
但是在下面的代码中:
#include<stdio.h>
int main() {
printf(\"Enter Something: \");
char name[100];
scanf(\"%99[help]\", name);
printf(\"%s\",name);
}
当我输入help me
时,我不会遇到任何问题,因为打印的单词是help
。但是,当我输入I need help
时,它会打印垃圾。请帮助如何解决此问题?
我的目标是匹配在输入中任何地方输入的单词“ 2”,例如,
\"This is a test, i need help in this\"
应该检测help
。
没有找到相关结果
已邀请:
2 个回复
量华
的结果。如果匹配失败,则不会修改您传入的指针。在您的特定情况下,“ 8”将包含任意数据。 检查
的输出后,您会发现它在该字符串上不匹配。
不是正则表达式解析器。它将仅尝试在输入流上看到的第一个\“ item \”进行匹配。 匹配说明符
表示\“我想以任意顺序匹配包含字母h,e,l,p的任何内容,最长为99个字符”。就这样。因此,它在您输入的第一个字母(\“ T \”)上失败,该字母不在集合中。 如果要在另一个字符串中查找一个字符串,请使用
。要阅读整行,如果您的环境允许,最简单的方法是使用
。
末钉蹈泰唬
的返回值以查看是否成功。
这将识别出“我需要帮助”和许多其他短语。 C标准说: 如果-字符在扫描列表中,并且不是第一个字符,也不是 第二个字符,第一个字符是^,最后一个字符也不是,则行为是 实现定义的。 在许多实现中,可以使用诸如“ 16”之类的符号来拾取字母或空格字符串。但是,这是实现定义的行为。这意味着它可以执行实现选择的任何操作,但是实现必须记录其含义。 写入扫描集的可靠方法是:
当然,这给您带来了标点符号方面的一些问题,更不用说重音符号了。您可以根据需要将两者都添加到扫描集中。