C程序中的字符不匹配

时间:2015-08-26 17:10:25

标签: c

我试图检查为password_entered输入的值是否在其中的任何位置包含数字。

但是,我遇到了一些错误:

  1. 当我真的试图传递getDefaultProps()时,编译器抱怨我在这里传递int

    scanf("%s",password_entered);

  2. 这一行抱怨说我使用的是冲突类型:

    char CD(char password_entered)

  3. (由于某种原因,这段代码看起来不像代码 - 任何帮助,非常感谢)。

    char

    更新后的代码: 我仍然收到错误:int main() { char password_entered[20]; //max is 20 char char CD(char password_entered[]); printf("Please enter a password"); scanf("%s", password_entered); if (CD(password_entered)){ printf("You entered a password with a digit!"); } return 0; } char CD(char password_entered) { for(i=0; i<=strlen(password_entered); i++){ if(isdigit(password_entered)){ //contains a digit return '1'; } else{ return 0; } } } &#34;错误:预期&#39 ;;&#39;,&#39;,&#39; ,或者&#39;)&#39;

    我在这里做错了什么?

    谢谢。

1 个答案:

答案 0 :(得分:1)

首先,将password_entered声明为char数组:

char password_entered[20];

您正在将一个字符串传递给CD:

  

while(CD(password_entered)!= 1);

并抓取char中的值:

  

char CD(char password_entered)

password_entered是一个char数组,而不是char。 它应该是char CD(char[] password_entered)

你的最后一个功能:

if(isdigit(password_entered))
{

//contains a digit

 return '1';

 }

 else{

  return '1';

  }

应该是

if(isdigit(password_entered[i])){
            //contains a digit
            return '1';
        }
        else{
            return '1';
        }

这就是你的代码的样子:

int main()
{    
    //int password_min=6;

    char password_entered[20]; //max is 20 char

    //functions
    bool CD(char password_entered);
    // It should be declared above


    // do{
    //     printf("Please enter a password");
    //     scanf("%s", password_entered); // you are reading in an array, which is not correct
    // }
    // while( CD(password_entered) != 1 );

    printf("Please enter a password");
    scanf("%s", password_entered);

    if ( CD(password_entered))
    {
        // a password
    }


    return 0;
}

// Check for digits in password_entered var
char CD(char[] password_entered) {
    int flag = 0;
    for(i=0; i<=strlen(password_entered); i++){
        if(isdigit(password_entered)){
            //contains a digit
            return '1';
        }
        else{
            flag = 1;
            break;
        }
    }
    if ( flag )
        return -1;
    else
        return 1;
}

编辑最终:这是你的程序应该是这样的方式:

#include <stdio.h>
#include <string.h>
int main()
{

    char password_entered[20]; //max is 20 char

    //functions
    char CD(char password_entered[]);


    //do{}
    printf("Please enter a password");
    scanf("%s", password_entered);
    //}
    //while( CD(password_entered) != 1 );

    if (CD(password_entered)){
        printf("You entered a password with a digit!");
    }

    return 0;
}

// Check for digits in password_entered var
char CD(char password_entered[]) {
    int i;
    for(i=0; i<=strlen(password_entered); i++){
        if(isdigit(password_entered)){
            //contains a digit
            return '1';
        }
        else{
            return 0;
        }
    }

}