gpt4 book ai didi

c - C语言中如何判断一个字符串是否为有效日期

转载 作者:行者123 更新时间:2023-11-30 17:44:17 25 4
gpt4 key购买 nike

我正在编写一个函数来检查字符串是否是有效日期。

我传入任何随机字符串,例如:“ted”或 11/34/67 或 9/10/13

在该函数中,有效月份是 1-12 之间的任何数字,有效日期是 1-31 之间的任何数字。

我的想法是逐个字符地遍历每个字符串。我会检查第一个字符,看看它是否是一个数字,然后将其转换为 int(如果是)。然后我会测试它是否是一个有效的整数。但是,我在将字符转换为 int 时遇到问题。

int isDate(char* string)
{
int num;
if(isdigit(string[0]))
num = strtol(string[0]);

}

非常欢迎任何帮助或想法。

最佳答案

您确实可以使用 strol 来获取部分日期,请参阅 man 3 strol:

int isDate(char* string)
{
char *endptr;
int base = 10;
int year, month, day;

month = strtol(string, &endptr, base);
/* check month range here, return something on error */
printf("month: %d\n", month);

if (endptr[0] == '/') {
year = strtol(endptr + 1, &endptr, base);
/* check year range ... */
printf("year: %d\n", year);
} else {
/* no year, error ... */
}
if (endptr[0] == '/') {
day = strtol(endptr + 1, &endptr, base);
/* check day range ... */
printf("day: %d\n", day);
} else {
/* no day, error ... */
}

/* success, return something */
}

您可能还需要检查 strtol() 调用是否有错误,请阅读联机帮助页。发送 endptr + 1 可能很危险,但它对您有用。

关于c - C语言中如何判断一个字符串是否为有效日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20039800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com