2014-11-13 3 views
-2

ISO8601 타임 스탬프에서 시간 섹션을 추출하려고합니다.타임 스탬프에서 시간 추출 중

다음의 기표에서 "0001-01-01T17:45:33"이 부분을 추출하고 싶습니다 "17:45:33".

+3

어디로 추출 하시겠습니까? 변수와 함수는 어떻게 선언됩니까? –

+3

일부 문자열에서 추출한 다음 strstr()을 사용할 수는 있지만 실제로 원하는 것이 명확하지 않은 경우? – Gopi

+3

this_part = strchr (this_string, 'T') +1; – BLUEPIXY

답변

2

몇 가지 옵션이 있습니다.

변수 배열에 string이라는 문자가 있다고 가정 해 보겠습니다. 더 복잡 경우

#define TIMEWIDTH 8 
#include <stdio.h> 
#include <string.h> 

int main() { 
    const char string[] = {"0001-01-01T17:45:33\0"}; 

    unsigned int strlength = strlen(string); 

    char temp[TIMEWIDTH + 1]; // add one for null character 

    printf("%s\n", string); 
    strncpy(temp, string + strlength - TIMEWIDTH, TIMEWIDTH + 1); // another + 1 for the null char 
    printf("%s\n", temp); 
} 

는 당신이 좀 더 분석을 할 필요가 :

지금 당신은 항상 문자열의 마지막에있을 것입니다 시간이 당신이 단지 수있는 아주 쉬운 그것은`그것을 알고있는 경우 그것을 찾아라. 수동으로 또는 sscanf() 또는 다른 것과 같은 다른 사용 가능한 도구를 사용하십시오. sscanfs()의 너비를 지정하십시오.

http://www.tutorialspoint.com/c_standard_library/c_function_sscanf.htm

T는 시간의 시작을 나타내는 경우는 strchr과 함께 찾아보실 수 있습니다 : 그것은 단지의 경우 정말 ... 입력이 얼마나 변수에 따라 달라집니다

#include <stdio.h> 
#include <string.h> 

int main() { 
    const char string[] = {"0001-01-01T17:45:33\0"}; 

    char *temp; 

    temp = strchr(string, 'T') + 1; 
    printf("%s\n", temp); 
} 

단 하나의 예제 중 하나를 사용할 수 있습니다. 마지막 하나는 더 효율적입니다.

당신은 그것이 ISO 8601 타임 스탬프임을 나타 냈습니다. 그럼 난 그냥 두 번째 방법을 사용합니다.

관련 문제