我正在写一个小程序,接受来自stdin
的输入,并检查它是否包含数字。问题在于它仅适用于scanf()
而不适用于fgets
(我想避免使用scanf
)。
为此,我使用isDigit
中的<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
我在做什么错了?
答案 0 :(得分:3)