将军事时间分解为HH MM和SS /

时间:2014-05-02 05:16:31

标签: c string

说我有这样的时间

12:34:56

我如何将已解析的integers存储到char array?(这是一项要求)

argv[2]是在终端中作为参数传入的时间。

这是我到目前为止所做的:

char *semi;
semi = strchr(argv[2],':')
&semi = '\0';
while(argv[2] != null){

顺便说一句,这是C。我知道其他语言会让这更容易。

2 个答案:

答案 0 :(得分:3)

为什么不简单地使用sscanf

char hh[3], mm[3], ss[3];
const char time[] = "12:34:56";

sscanf(time, "%2s:%2s:%2s", hh, mm, ss);

您应该检查sscanf的返回值以验证输入。

答案 1 :(得分:1)

您可以简单地将空字节'\0'替换为字符串':'中的字符argv[2],并将指针保存到字符串中小时,分钟和秒的开头部分

// pointer to the start of the hour part
char *hh = argv[2];

char *mm, *ss;

char *temp = strchr(hh, ':');

// pointer to the start of the minute part
mm = temp + 1;

// null-terminate the hour part
*temp = '\0';

temp = strchr(mm, ':');

// pointer to the start of the second part
ss = temp + 1;

// null-terminate the minute part
*temp = '\0'; 

// print the hours, minutes and seconds part
printf("%s\n", hh);
printf("%s\n", mm);
printf("%s\n", ss);

argv[2]是一个字符串,即它以空值终止,因此秒部分已经以空值终止。