将时间字符数组转换为C中的整数

Lau*_*nce 5 c arrays string time

我不经常使用C,所以这对我来说有点棘手,尽管我确信这是一项非常简单的任务.我一直在努力研究如何做到这一点,我不认为我每次搜索都正确地说它.

我需要帮助搞清楚如何将char数组中的数字转换为整数.

基本上,我会有一个像"1:09 pm","11:12 AM","11:12 am"等字符数组.

我想弄清楚如何将这三件事分开,这样我就可以弄清楚(1)小时数,(2)分钟数,以及(3)是上午还是上午(大写与否)

到目前为止,我认为我有办法获得第一个数字:

char *time = arg[1]; // arg[1] is "1:09pm", etc
char *hours = strtok(time, ":");
int hours = atoi(hours);
Run Code Online (Sandbox Code Playgroud)

从那里,我不是100%肯定该怎么做.是否存在某种正则表达式类型解析函数,它将从":"转换为字母字符?

先感谢您!

Joh*_*ost 4

只是建立在你开始的基础上......

char *time = arg[1]; // arg[1] is "1:09pm", etc
char *hours = strtok(time, ":ap");
char *mins = strtok(NULL, ":ap");
int ihours = atoi(hours);
int imins = atoi(mins);
if (strchr(time, 'a') == NULL) hours += 12;
Run Code Online (Sandbox Code Playgroud)

对 strtok 的第二次调用将查找您提供的标记字符串中任何字符的下一个实例。因此第二次调用将找到“a”或“p”。atoi 方法在看到 a 或 p 时将忽略字母字符。if 语句是按上午或下午调整您的工作时间。

祝你好运!