我想将模拟的时间戳值作为int发送。更清楚的是,如果mote输出是:
00:39.841 ID:6 unicast message ready to be sent
我希望能够以毫秒为单位输入值00:39.841。我该怎么办?
谢谢。
答案 0 :(得分:0)
我建议您使用函数strtok()查找所需的字符串,例如00
或39
。
和strtol()
从字符串转换为长整数。无论如何,请从atoi()
远离 。
这是一个例子,从分钟/秒到毫秒的转换取决于你。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char input[] = "00:39.841 ID:6 unicast message ready to be sent";
char * ptr;
long minutes = 0,
seconds = 0,
milisecs = 0;
ptr = strtok(input, ":");
if (ptr == NULL) { fprintf(stderr, "Wrong input minutes."); return 1; }
minutes = strtol(ptr, (char **)NULL, 10);
ptr = strtok(&input[3], ".");
if (ptr == NULL) { fprintf(stderr, "Wrong input seconds."); return 1; }
seconds = strtol(ptr, (char **)NULL, 10);
ptr = strtok(&input[6], " ");
if (ptr == NULL) { fprintf(stderr, "Wrong input milisecs."); return 1; }
milisecs = strtol(ptr, (char **)NULL, 10);
printf("%ld - %ld - %ld\n", minutes, seconds, milisecs);
return 0;
}