#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”符号。我朋友让我把这个和我的代码工作。“==0”是做什么的?

最佳答案

isalpha的签名是int isalpha ( int c )
参数
c分类字符
返回值
如果字符是字母字符,则为非零值,否则为零。
因此,如果c不是alpha,则返回非零,否则返回0。
关于程序:
scanf需要char *,而不是&userPassword,即char **scanf("%s", userPassword)可以。
char传递到isalpha而不是char *
如果您想检查一个字符串是否全部是alpha,您可以简单地迭代该字符串并检查每个单个字符。比如:

bool is_all_alpha(char *s) {
    for (; *s!='\0'; ++s) {
        if (!isalpha(*s)) return false;
    }
    return true;
}

http://en.cppreference.com/w/cpp/string/byte/isalpha

关于c - 检查isalpha的返回值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45666338/

10-11 18:24