我正在尝试检查为password_entered 输入的值是否包含数字。
但是,我遇到了一些错误:
当我真正尝试传递
char
时,编译器提示我在这里传递了int
:scanf("%s",password_entered);
这一行提示我使用了冲突的类型:
字符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/