2016-01-06 130 views
-3
#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。也没有空间。如何检查两个字符串是否具有相同的字符?

所以我想我可以做一个字符串包含所有非法字符,然后检查他们是否都有一些字符是相同的,但我不知道如何做到这一点。请帮我

+0

先写代码。显示给我们。 – Downvoter

+1

我不知道如何做到这一点 –

+0

开始与主,也许添加一些包括,如stdio.h。 – matt

回答

0

你是对所有非法字符存储在一个单独的字符串。
那你为什么没有这样做?

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; 
     } 

现在,添加识别字符的重复逻辑。

+0

不要称之为'newStr'。如果它包含禁止的字符,则称其为'forbiddenChars'。 –

+0

非常感谢你 –

+0

@TalSokolinsky:你添加了识别重复字符的逻辑吗? – rootkea

0

有几种方法可以做到这一点。

您可以遍历字符串,并为每个字符检查它是否是“坏”字符之一。

或者,您可以使用正则表达式。它们不是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

相关问题