[英]Why doesn't this isNumeric function work with fgets?
我正在編寫一個小程序,接受來自stdin
並檢查它是否包含數字。 問題在於它僅適用於scanf()
而不適用於fgets
(我想避免使用scanf
)。
為此,我使用了<ctype.h>
isDigit
函數和以下用於檢查數組每個字符的函數:
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
做錯了什么?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.