正在检查`isalpha'的返回值` #包括 #包括 #包括 #包括 #包括 int main(){ 字符用户密码[20]; printf(“输入密码:\n”); scanf(“%c”、&userPassword); if(isalpha(userPassword)==0){ printf(“尼斯”); }否则{ printf(“Nope”); } 返回0; }
我正试图找出一个密码,用来检查密码是否只包含字母。为什么此代码只适用于“==0”符号。我的朋友告诉我把这个放进去,我的代码就可以工作了。“==0”的作用是什么?isalpha的签名是正在检查`isalpha'的返回值` #包括 #包括 #包括 #包括 #包括 int main(){ 字符用户密码[20]; printf(“输入密码:\n”); scanf(“%c”、&userPassword); if(isalpha(userPassword)==0){ printf(“尼斯”); }否则{ printf(“Nope”); } 返回0; },c,isalpha,C,Isalpha,我正试图找出一个密码,用来检查密码是否只包含字母。为什么此代码只适用于“==0”符号。我的朋友告诉我把这个放进去,我的代码就可以工作了。“==0”的作用是什么?isalpha的签名是intisalpha(intc) 参数 要分类的c字符 返回值 如果字符是字母字符,则为非零值,否则为零 因此,如果c不是alpha,则返回非零,否则返回0 关于该计划: scanf需要char*,而不是&userPassword,即char**扫描(“%s”,用户密码)正常 将char传递到isalpha而不是
intisalpha(intc)
- 参数 要分类的c字符
- 返回值 如果字符是字母字符,则为非零值,否则为零
c
不是alpha,则返回非零,否则返回0
关于该计划:
scanf
需要char*
,而不是&userPassword
,即char**
<代码>扫描(“%s”,用户密码)正常char
传递到isalpha
而不是char*
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <math.h>
#include <string.h>
int main() {
char userPassword[20];
printf("Type in your password: \n");
scanf("%c", &userPassword);
if (isalpha(userPassword) == 0) {
printf("Nice");
} else {
printf("Nope");
}
return 0;
}
isalpha
的签名是intisalpha(intc)
- 参数 要分类的c字符
- 返回值 如果字符是字母字符,则为非零值,否则为零
c
不是alpha,则返回非零,否则返回0
关于该计划:
scanf
需要char*
,而不是&userPassword
,即char**
<代码>扫描(“%s”,用户密码)正常char
传递到isalpha
而不是char*
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <math.h>
#include <string.h>
int main() {
char userPassword[20];
printf("Type in your password: \n");
scanf("%c", &userPassword);
if (isalpha(userPassword) == 0) {
printf("Nice");
} else {
printf("Nope");
}
return 0;
}
如果您不希望
==0
,请尝试If(!isalpha(userPassword))
您只读取和测试一个字符,而不是字符串。isalpha
如果测试失败,将返回“0”(false),否则如果测试通过,将返回非零(true)。所以,使用“!”如上所述。行scanf(“%c”、&userPassword)代码>在多个帐户上是错误的。将单个字符读入数组;您传递一个指向数组的指针,其中需要指向字符的指针;您不需要检查scanf()
中的返回值;在此输入之后,您可能会遇到遗留换行符等问题。现在还不清楚您是否需要1个字符的密码(提示-它们不安全),但是为什么还要麻烦使用20个字符的数组呢。(只有20个字符,包括null;该死的,这是我最喜欢的密码方案!)哦,isalpha()
需要一个字符;您正在传递指向它的指针。编译器应该在抱怨。不要发布非编译代码,除非您声明无法让它编译并显示错误消息。并确保代码是MCVE()。如果不希望==0
,请尝试如果(!isalpha(userPassword))
您只读取和测试一个字符,而不是字符串。如果测试失败,isalpha
将返回“0”(false),否则如果测试通过,它将返回非零(true)。所以,使用“!”如上所述。行scanf(“%c”、&userPassword)代码>在多个帐户上是错误的。将单个字符读入数组;您传递一个指向数组的指针,其中需要指向字符的指针;您不需要检查scanf()
中的返回值;在此输入之后,您可能会遇到遗留换行符等问题。现在还不清楚您是否需要1个字符的密码(提示-它们不安全),但是为什么还要麻烦使用20个字符的数组呢。(只有20个字符,包括null;该死的,这是我最喜欢的密码方案!)哦,isalpha()
需要一个字符;您正在传递指向它的指针。编译器应该在抱怨。不要发布非编译代码,除非您声明无法让它编译并显示错误消息。并确保代码是MCVE()。&userPassword
是char(*)[20]
,而不是char**
&userPassword
是char(*)[20]
,而不是char**