gpt4 book ai didi

c - 如何在C中检查字符串的特定格式

转载 作者:行者123 更新时间:2023-11-30 19:08:11 26 4
gpt4 key购买 nike

我有以下代码,它接受类似于小时的字符串。我想检查字符串格式是否实际上是 xx-yy 其中 xx 类似于一个小时确实 yy.. 代码工作正常,但是当我输入 "02-13-" 时,它返回 true,但我希望它返回 false,因为它不正确(因为它有- 位于末尾)

bool hourIsValid(char * hours) {
int openH = 0;
int closeH = 0;

if ((sscanf(hours, "%d-%d", & openH, & closeH) == 2) && openH >= 0 && openH <= 24 && closeH >= 0 && closeH <= 24) {
if (openH >= closeH) {
return false;
}
return true;
} else {
return false;
}
}

最佳答案

解决方案取决于您的代码在决定输入是否有效时必须有多“迂腐”。例如,您可能期望 "2-14""02 - 15""2-14 " 有效,或者您可能不是。这取决于。

如果您想获得一个仅接受精确格式 "dd-dd" 的迂腐版本,不带前导或尾随字符或空格,并且每个小时值均采用两位数格式,您可以在使用 sscanf-code 读取值之前检查字符串,如下所示:

if (strlen(hours) != 5)
return 0;

if (hours[2] != '-')
return 0;

if ( !isdigit(hours[0])
|| !isdigit(hours[1])
|| !isdigit(hours[3])
|| !isdigit(hours[4])
)
return 0;

关于c - 如何在C中检查字符串的特定格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45786872/

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