我正在尝试迭代字符串以查看输入是否为整数。
这是代码:
for (int i = 1; i < strlen(buffer); i++) //Checking that each character of the string is numeric
{
if (!isdigit(buffer[i]))
{
valid = false;
break;
}
}
if(valid == false)
{
printf("Invalid input!");
}
else
{
num = atoi(buffer);
printf("The number entered is %d", num);
}
问题是即使输入正确,让我们说2,输出消息仍然是“输入无效!”。
我现在非常沮丧。我已经尝试使用atoi函数,strtol函数和其他方法,以便我可以验证一个数字并确保:
1)这不是一封信 2)它是一个整数
请帮帮我。我一直试图解决这个问题超过2个小时。
答案 0 :(得分:8)
由于fgets
读取一行,'\n'
(不是数字)可能会保留在字符串的末尾。你可以删除它:
#include <string.h>
char *pend = strrchr (buffer, '\n');
if (pend != NULL) *pend = '\0';