Use strtol().
(Error and sanity checks omitted)
Code:
char *ptr = "10:45pm";
char *endptr;
int hours, min;
hours = strtol(ptr, &endptr, 0);
/* endptr now set to ":45pm" */
if (endptr == NULL || *endptr != ':')
report_error("time format");
endptr++;
ptr = endptr;
min = strtol(ptr, &endptr, 0);
/* endptr now set to "pm" */