如何使用isalpha结果来启动if语句?

时间:2017-07-19 20:18:08

标签: c if-statement isalpha

好的,所以我有一个for循环,检查字符串的每个字母,以确保字符串完全由字母字符组成,然后再转到程序的下一个阶段。

但是,如果" isalpha"我的if语句应该运行,我遇到了问题。功能回来了。

string keyword = argv[1];
for (int i = 0; i < strlen(keyword); i++)
{
    char letter = keyword[i];
    if (isalpha(letter) = false)
    {
        printf("Only use alphabetical characters in your key\n");
        return 1;
    }

我收到错误:

  

错误:表达式不可分配           if(isalpha(letter)= false)

如何获得由于isalpha为假而启动的if语句?

以下错误如何?

if (isalpha(letter) = false)

2 个答案:

答案 0 :(得分:3)

你犯了一个错字:if (isalpha(letter) = false)不是比较,而是作业。你应该写:

if (isalpha(letter) == false)

更常见的方法是使用!运算符:

if (!isalpha(letter))

但请注意isalpha()对于与EOF不同的负值有未定义的行为,如果char类型已签名,则letter的值可能为负。使用强制转换修正此问题:

if (!isalpha((unsigned char)letter))

答案 1 :(得分:1)

  

以下错误如何?

if (isalpha(letter) = false)

嗯,这是作业=用于分配值,并且您无法为函数调用分配值(希望显而易见的原因)

要比较值,请使用C中的==运算符。

也就是说,当你已经有 boolean 值时,根本不需要检查与==的相等性。只需写下:

if (!isalpha(letter))