说我有这样的时间
12:34:56
我如何将已解析的integers
存储到char array
?(这是一项要求)
argv[2]
是在终端中作为参数传入的时间。
这是我到目前为止所做的:
char *semi;
semi = strchr(argv[2],':')
&semi = '\0';
while(argv[2] != null){
顺便说一句,这是C
。我知道其他语言会让这更容易。
答案 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]
是一个字符串,即它以空值终止,因此秒部分已经以空值终止。