迭代字符串输入

时间:2013-03-05 18:03:37

标签: c validation input integer fgets

我正在尝试迭代字符串以查看输入是否为整数。

这是代码:

 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个小时。

1 个答案:

答案 0 :(得分:8)

由于fgets读取一行,'\n'(不是数字)可能会保留在字符串的末尾。你可以删除它:

#include <string.h>

char *pend = strrchr (buffer, '\n');

if (pend != NULL) *pend = '\0';