我想退出程序时,我的argv1包含一些字符,而不是字母表。因此,我指出:
for(int j = 0, p = strlen(argv[1]); j < p; j++)
{
if (false(isalpha(argv[1][j])))
{
printf("invalid character\n");
return 1;
}
},但它说的是错误:调用对象类型'int‘不是函数或函数指针。我不明白这意味着什么。这是CS50周刊第2周的问题-替代。
。
发布于 2021-05-16 14:42:15
C中没有名为false的内置函数。您的表达式false(isalpha(argv[1][j]))有表单false(x),因此它看起来像一个函数调用。
标头<stdbool.h>定义了一个扩展为整数常量为零的宏。因此,false(x)实际上是0(x)。在这里,0是一个int常量。编译器消息“调用对象类型'int‘不是函数或函数指针”告诉您,不能像调用函数一样调用此int 0。
如果您的程序中有一些名为false的函数,则可能通过包含<stdbool.h> (或者可能包含其他头文件)来有效地覆盖它。如果是这样,您应该重命名您的函数。
要测试表达式是否为“false”,可以使用!运算符:
if (!isalpha(argv[1][j]))
{
// Code here will be executed when isalpha(argv[1][j]) is false.
}https://stackoverflow.com/questions/67557793
复制相似问题