如何检查两个字符串是否具有相同的字符?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define HUNDRED 100
int main()
{
char str[HUNDRED];
char forbiddenChars[] = "[email protected]#$%^&*()+= ";
scanf("%s",str);
for(i=0;str[i];i++)
{
if(str[i] == newStr[]) //this if is supposed to check if they have the same char
{
//prints illegal password
}
}
}`
我被要求写检查,如果密码是“好”, “好”指的密码代码没有字符一样!@#$%^ & *()+ =,并没有任何同样的字符,例如黄油是不好的,因为它有双t。也没有空间。如何检查两个字符串是否具有相同的字符?
所以我想我可以做一个字符串包含所有非法字符,然后检查他们是否都有一些字符是相同的,但我不知道如何做到这一点。请帮我
你是对所有非法字符存储在一个单独的字符串。
那你为什么没有这样做?
newStr[] = "[email protected]#$%^&*()+=";
现在对于newStr
检查它是否存在于str
与否的每个字符。
提示 - 嵌套循环
return false
非法字符的第一次出现。
同时你应该检查是否current character == previous character
。如果是,则返回false
。
编写和编辑您的代码。如果你卡住了,我们会帮你的。
甲furher暗示:
int strLen = strlen(str);
int newStrLen = strlen(newStr);
for(i = 0; i < newStrLen; i++)
for(j = 0; j < strLen; j++)
if(newStr[i] == str[j])
{
printf("Bad Password");
return 1;
}
现在,添加识别字符的重复逻辑。
不要称之为'newStr'。如果它包含禁止的字符,则称其为'forbiddenChars'。 –
非常感谢你 –
@TalSokolinsky:你添加了识别重复字符的逻辑吗? – rootkea
有几种方法可以做到这一点。
您可以遍历字符串,并为每个字符检查它是否是“坏”字符之一。
或者,您可以使用正则表达式。它们不是ANSI C的一部分,但属于POSIX的一部分。我已经在下面关联了他们的一些资源。如果你想要的例子或更多关于正则表达式的信息,谷歌将能够帮助你很多。
手册页对C正则表达式:正则表达式上http://pubs.opengroup.org/onlinepubs/009695399/functions/regcomp.html
官方GNU页:http://www.gnu.org/software/libc/manual/html_node/Regular-Expressions.html
先写代码。显示给我们。 – Downvoter
我不知道如何做到这一点 –
开始与主,也许添加一些包括,如stdio.h。 – matt