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