0

好的,所以我有一个 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)
4

2 回答 2

3

您打错了:if (isalpha(letter) = false)不是比较,而是分配。你应该写:

if (isalpha(letter) == false)

一种更常见的编写方式是使用!运算符:

if (!isalpha(letter))

但是请注意,isalpha()对于与 不同的负值,它具有未定义的行为EOF,并且如果char类型是有符号的,则值 ifletter可以是负数。这个问题通过强制转换得到纠正:

if (!isalpha((unsigned char)letter))
于 2017-07-19T20:43:13.460 回答
1

下面怎么错了?

if (isalpha(letter) = false)

嗯,这是一个任务=用于分配值,并且您不能为函数调用分配值(出于希望显而易见的原因)

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

也就是说,当您已经有布尔==值时,根本不需要检查是否相等。写吧:

if (!isalpha(letter))
于 2017-07-19T20:20:55.543 回答