c - 如何在 C 中使用 isdigit 函数
问题描述
我是一个完整的初学者,正在学习 cs50 课程,我需要检查用户的参数是否是数字。
这是代码:
#include <stdio.h>
#include <cs50.h>
#include <ctype.h>
int main(void)
{
int i = 1;
if (isdigit(i) == 1)
{
printf("i is a digit");
}
else if (isdigit(i) == 0)
{
printf("i is not a digit");
}
return 0;
}
当我运行这段代码时,我基本上得到了我应该得到的相反结果。当 i 是一个数字时,它会打印出“i is not a number”,反之亦然。我究竟做错了什么?我认为 isdigit 如果是数字则返回非零值,否则返回 0。基本上1为真,0为假。这不正确吗?非常感谢,谢谢!
解决方案
我究竟做错了什么?
“isdigit 函数测试任何十进制数字字符”。 i
值为1的不是数字字符。
试试i = '1';
。然后i
将具有数字字符的值。
代码正在错误地测试返回值。@tadman。 is...()
返回 0 或非零。
// if (isdigit(i) == 1)
if (isdigit(i))
注意:is...(int ch)
函数只ch
对unsigned char
范围和有效EOF
。
推荐阅读
- c# - 使用 select2 将值传递给它时返回 null 的列表
- python-3.x - 将 DNN 输出写入 csv 文件
- javascript - 从调用中返回来自模块的响应
- c - 在 C 和 OpenGL 中传递一个 4x4 矩阵作为布局
- powershell - 数组,powershell中意外的字符串到布尔转换
- elasticsearch - 当几个小时或几天没有请求时,Elasticsearch 会进入睡眠状态吗?
- glsl - 在 PIXI.Filter 片段着色器中访问纹理
- android-studio - Camerax 延迟放大和缩小
- google-maps - 从谷歌地图读取kml文件时如何避免CORS错误
- amazon-web-services - 手动编辑 AWS 放大的 Cloudformation 模板