How to check a specific format of string in C -
i have following code accepts string resembles hours.. want check if string format xx-yy xx resembles hour yy.. code worked fine when input "02-13-" returns true want return false cause it's not correct (cause has - @ end)
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; } }
the solution depends on how "pedantic" code has when deciding if input valid or not. example, might expect "2-14", "02 - 15", " 2-14 " valid, or might not. depends.
if want pedantic version accepts exact format "dd-dd" no leading or trailing characters or white spaces , two-digit format each hour value, check string follows before reading in values 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;
Comments
Post a Comment