你如何让 strtol 转换为 0

How do u make strtol convert 0

void isInt(char *string)
{
    if (strlen(string) > 2)
        printf("Invalid")

    if (!strtol(string, &endptr, 10))
        printf("Invalid")

    printf("Valid")
}

我有这段代码可以检查一系列 1 或 2 个字符是否仅包含整数,例如 12、1、10 有效,但 6g, ii 无效。我遇到的问题是,如果输入字符串包含 0 那么它 returns 无效,例如 0 或 10 应该有效但不是。我如何让 0 有效?还是有更简单的方法来做到这一点?

你要不要试试:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void isInt(char *string)
{
    char *endptr;
    long val;

    if (strlen(string) > 2) {
        printf("String too long: %s\n", string);
        return;
    }
    val = strtol(string, &endptr, 10);
    if (*endptr != '[=10=]') {
        printf("Invalid string: %s \n", string);
        return;
    } else {
        printf("Valid: %s\n", string);
    }
}

int main()
{
    isInt("2");
    isInt("10");
    isInt("0");
    isInt("6g");

    return 0;
}

输出:

Valid: 2
Valid: 10
Valid: 0
Invalid string: 6g 

如果你没有绑定到strtol(),那么isdigit()给你一个更简单的解决方案:

void isInt(const char *string) {
    if (isdigit(string[0]) && isdigit(string[1])) {
        printf("Valid");
    } else {
        printf("Invalid");
    }
}