正在检查`isalpha'的返回值` #包括 #包括 #包括 #包括 #包括 int main(){ 字符用户密码[20]; printf(“输入密码:\n”); scanf(“%c”、&userPassword); if(isalpha(userPassword)==0){ printf(“尼斯”); }否则{ printf(“Nope”); } 返回0; }

正在检查`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而不是

我正试图找出一个密码,用来检查密码是否只包含字母。为什么此代码只适用于“==0”符号。我的朋友告诉我把这个放进去,我的代码就可以工作了。“==0”的作用是什么?

isalpha的签名是
intisalpha(intc)

  • 参数 要分类的c字符

  • 返回值 如果字符是字母字符,则为非零值,否则为零

因此,如果
c
不是alpha,则返回非零,否则返回0

关于该计划:

  • scanf
    需要
    char*
    ,而不是
    &userPassword
    ,即
    char**
    <代码>扫描(“%s”,用户密码)正常
  • char
    传递到
    isalpha
    而不是
    char*
  • 如果要检查字符串是否全部为alpha,只需迭代该字符串并检查每个字符。比如:

    #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*
  • 如果要检查字符串是否全部为alpha,只需迭代该字符串并检查每个字符。比如:

    #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**