【发布时间】:2019-09-21 14:00:39
【问题描述】:
我有一个将摄氏度转换为华氏度的代码。我需要检查用户写的是什么字符或整数。
我尝试过 isalpha 和 isdigit,但它们不起作用。
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main()
{
char t[] = "";
scanf("%s", &t);
if(isalpha(t))
{
printf("It's char\n");
}
else if (isdigit(t))
{
printf("It's int\n");
}
return 0;
}
【问题讨论】:
-
他们怎么不工作?您需要edit 并澄清。
-
您忽略了 scanf() 的返回值,风险自负。 sekrit.de/webdocs/c/beginners-guide-away-from-scanf.html
-
在
scanf()中的t之前不需要&。数组在参数列表中使用时会自动衰减为指针。 -
@Yunnosch :总体来说很好,但可能没有遇到 EOF,任何输入都可以使用
%s成功转换,因为它不是特定的内容。当然,字符串很可能是空的。 -
@Clifford 你是对的。但是您不会认真地相信这就是为什么 OP 在这种情况下会忽略返回值,对吗?任何忽视它的人都应该得到他们得到的所有奇怪行为。总是,即使原因无关。那些知道不要忽视它的人,请在极少数情况下发送
(void),他们这样做是有充分理由的。
标签: c char scanf digits isalpha