对字符串输入进行迭代
问题描述:
我想遍历字符串以查看输入是否是整数。对字符串输入进行迭代
这是代码:“无效的输入”
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,输出消息还在。
我现在非常沮丧。
1)它不是一个字母 2)它是一个整数
请帮助:我已经使用的atoi功能,strtol函数等方法,这样我可以验证数字,并确保试我。我一直试图解决这个问题超过2个小时。
答
由于fgets
读取一行,因此'\n'
(不是数字)可能会保留在字符串的末尾。你可以将其删除:
#include <string.h>
char *pend = strrchr (buffer, '\n');
if (pend != NULL) *pend = '\0';
您需要发布您的代码ISDIGIT的 – 75inchpianist 2013-03-05 18:05:48
是ISDIGIT由文件ctype.h库提供了一种方法。我没有自己创建它 – Matthew 2013-03-05 18:07:09
这显然是**不** *太本地化*。代码片段很明显,但输出却是意想不到的。 – Lion 2013-03-05 18:11:22