你如何让 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");
}
}
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");
}
}