gpt4 book ai didi

C 程序中的字符不匹配

转载 作者:行者123 更新时间:2023-11-30 20:24:50 28 4
gpt4 key购买 nike

我正在尝试检查为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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com