c - 为什么这个 isNumeric 函数不能与 fgets 一起使用?
问题描述
我正在编写一个小程序,它接受输入stdin
并检查它是否包含数字。问题是它只适用于scanf()
而不适用fgets
(我想避免使用scanf
)。
为此,我使用了isDigit
函数 from<ctype.h>
和以下函数来检查数组的每个字符:
int isNumeric(const char *buf) {
for(size_t i = 0; i < strlen(buf); i++)
if(isDigit(buf[i]) == 0)
return false;
return true;
}
这是驱动程序代码:
// This does not works
int main(void) {
char c[256];
fgets(c, sizeof(c), stdin);
if(isNumeric(c))
puts("Is numeric");
else
puts("Not numeric");
}
// ####################
// This works
int main(void) {
char c[256];
scanf("%s", c);
if(isNumeric(c))
puts("Is numeric");
else
puts("Not numeric");
}
显然,预期的输出应该是“是数字的”。我做错了fgets
什么?
解决方案
推荐阅读
- arrays - Numpy 数组操作 Y[ ..., 0]
- sql - 需要 SQL 查询以将格式化和每小时过滤的日期转换为 Excel 报告
- javascript - 如何根据它是开发环境还是生产环境动态导入或需要 js 文件?
- javascript - node js webpack scss没有正确显示
- location - 新的 /24 IP 位置不正确
- asp.net - 多个项目的 ASP.NET ActiveDirectory 联合身份验证
- c# - 使用 C# 并行执行任务。我这样做对吗?
- javascript - 如何将类组件中的道具发送到功能组件?
- javascript - 使用按钮更改表格行顺序并非每次都有效
- docker - 将 fluentd kubernetes 日志传递给已经在物理服务器上运行的 elasticsearch 和 kibana