gpt4 book ai didi

c - isalpha() 和 isdigit() 总是返回 0

转载 作者:太空宇宙 更新时间:2023-11-04 08:49:05 24 4
gpt4 key购买 nike

我不知道为什么 isdigit()isalpha() 一直这样做。无论我如何使用它们,它们总是返回 0。我是在错误地使用它们还是我的编译器出了问题?

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

//example of isdigit not working, it ALWAYS returns 0 no matter what the input is.
int main()
{
int num=0;
int check=0;

printf("Enter a number: ");
fflush(stdin);
scanf("%d",&num);
//Just checking what value isdigit has returned
check=isdigit(num);
printf("%d\n",check);
if(check!=0)
{
printf("Something something");
system("pause");
return 0;
}
else
{
system("pause");
return 0;
}
}

最佳答案

isdigit 作用于 int,但它应该是 char 扩展为 int。您正在读取一个数字并将其转换为二进制表示形式,因此除非您的 inout 恰好是匹配 0 - ´9`(即 0x30 - 0x39)的值,否则您将得到 false 作为结果。

如果你想使用isdigit(),你必须对用户输入的字符串中的单个字符使用它,所以你应该使用%s,或 %c 用于单个数字,并循环遍历字符串。

例子:

char c;
scanf("%c",&c);
check=isdigit(c);

或(快速和肮脏的例子)

char buffer[200];
if (scanf("%s", buffer) > 1)
{
int i;
for(i = 0; buffer[i] != 0; i++)
{
check=isdigit(buffer[i]);
}
}

关于c - isalpha() 和 isdigit() 总是返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20335977/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com