C 程序中的字符不匹配

标签 c

我正在尝试检查为password_entered 输入的值是否包含数字。

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

  1. 当我真正尝试传递 char 时,编译器提示我在这里传递了 int:

    scanf("%s",password_entered);

  2. 这一行提示我使用了冲突的类型:

    字符CD(字符密码_输入)

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

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

}

更新代码: 我仍然收到错误: char CD(char password_entered) { of "error: Expected ';', ',' , or ')' 。

我在这里做错了什么?

谢谢。

最佳答案

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

char password_entered[20];

您正在将字符串传递到 CD:

while( CD(password_entered) != 1 );

并获取 char 中的值:

char CD(char password_entered)

password_entered 是一个字符数组,而不是一个字符。 它应该是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;
        }
    }

}

关于C 程序中的字符不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32232661/

相关文章:

c - 预处理常量数的指数

C recv() 不读取缓冲区

c++ - OpenCL 因大输入数组而崩溃

c - OS X Xcode/clang 构建 Windows 可执行文件?

c++ - 共享库和语言标准

c - 检查 unsigned long long 的正确输入时出现负数错误

c - 如何正确使用可变函数

c - OS X : Is it possible to view the source code of the Standard C Library?

c - 如何在 C 中打印 ASCII 而不是整数?

c - 为什么我可以在 Ubuntu 中构建这个包(aspectC),但不能在 Cygwin 中构建?