2

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

这是代码:

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

4

1 回答 1

8

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

#include <string.h>

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

if (pend != NULL) *pend = '\0';
于 2013-03-05T18:05:42.170 回答