Sscanf包含数据的字符串

时间:2018-04-22 15:55:09

标签: c memory scanf

我有一个包含数据的字符串,"2013-04-20T13:50:47.390"就像这样。

我在考虑使用字符串值的方法。我想使用sscanf,因为它似乎是一种有效的方法,但我不知道我需要在sscanf中添加的命令,因此它知道分隔符如&# 39; - ',' T',':','。'。有什么建议吗?

顺便说一句,是否有任何有效的方式来剪切字符串,我想在T之后的另一个字符串中保存该部分。

感谢您的时间。

2 个答案:

答案 0 :(得分:3)

你可以这样做:

int year, month, day, hour, min, sec, msec;
int ret;
ret = sscanf(str, "%4d-%2d-%2dT%2d:%2d:%2d.%d", 
             &year, &month, &day, &hour, &min, &sec, &msec);
if (ret != 7) {
    printf("Error while parsing time");
}

编辑:正如@DavidBowling在评论中所提到的,格式说明符2中的%2d告诉sscanf读取关联整数的2位数

答案 1 :(得分:0)

谢谢,我发现了怎么做。我只需要将分离器添加到sscanf:

    sscanf(stringTest,"%d-%d-%dT%d:%d:%d.%d", &year,&month,&day,&hour,&min,&sec,&ms);