我需要简要说明两个命令isdigit()
和isalpha()
的工作原理。当然,我在提出问题之前阅读了在线资料,但是我尝试过这些资源并且无法让他们工作。使用它们最简单的方法是什么?
我知道它会返回一个值,所以我假设我可以像这样使用它:
if(isdigit(someinput)==1)
return -1;
这是对的吗?我可以将它用于任何类型的角色吗?我可以将它与浮点数或数组进行比较吗?
假设,我想扫描一个包含数字和字母的文本文件,并确定我正在扫描的内容。这两个命令可以在这种情况下使用吗?
答案 0 :(得分:2)
你不通常想要比较返回值,只需将其视为布尔值:
if (isalpha(someinput))
do_whatever();
如果您坚持进行比较,则需要!=0
,但这完全是多余的,毫无意义。
您在已从输入中读取的字符上使用它,这些字符不是(此时)浮动或任何东西,只是字符组。在浮点数的情况下,其中一些将是数字,但许多也将包括小数点(不是数字),偶尔可能包括e
,+
或-
好。
另请注意,在调用任何unsigned char
函数之前,通常需要将输入强制转换为is*
。许多字符集在将某些字符视为signed char
时将其视为负数,并将负值传递给其中任何字符都会产生未定义的行为。
答案 1 :(得分:1)
它们不是“命令”,它们是功能。函数接受参数并返回值。
#include <ctype.h>
int isdigit( int ch );
这是isdigit
函数的签名:它表示它会接受int
值(或可以投放到int
的内容,例如char
),并将返回int
。因此,您不能将它传递给数组(尽管您可以在int[]
的每个成员上调用它。)
isalpha
的签名是相同的(显然名称除外)。
文档说明如下:
描述:函数isalpha() 如果参数为a,则返回非零值 字母表。除此以外, 返回零。
这意味着您的比较对于所有实现都不正确。最好做一些像:
if (isdigit(someinput)) {
return -1;
}
在C中,0将在布尔表达式中计算为false
,并且所有非零值都将计算为true
。因此,此检查将涵盖返回-1,5,无论如何的isdigit
的实现。
如果要将这些应用于文本文件中的值,则必须一次读取一个字符的文本,并将收到的字符传递给这些方法。
答案 2 :(得分:0)
您可以将它用于任何 char 类型! (实际上它是int,我不知道这是出于兼容性原因还是其他原因,但最常见的用法是字符)
它将确定例如'5'是数字还是字母数字(字母表的一部分)。是的,如果someInput
的类型为“char”