在C中将字符串转换为struct tm

时间:2014-02-04 23:43:35

标签: c string date

我正在尝试将字符串转换为struct tm。下面是我的代码....我在编译时遇到此错误,但我不知道是什么/如何更改线路以使其工作。

v245-2%g ++ prog1.c prog1.c:在赋值

中的函数char* calcage(char**, char**)': prog1.c:143: error: cannot convert char *'到`tm *'
char* calcage(char **individual, char **age)
  {
    time_t time_raw_format;
    struct tm * time_struct;
    char *birthday = (char *)malloc(50*sizeof(char));
    struct tm * birthparse;
    struct tm * birth_struct;

    char buf [100];

    time ( &time_raw_format );
    time_struct = localtime ( &time_raw_format );

    strftime (buf,100,"It is: %m/%d/%Y.",time_struct);
    puts (buf);

    printf("person: %s\n", *individual);

    birthday = strrchr(*individual, ',');
    birthday++;

    printf("Birthday:  %s\n", birthday);

   birthparse = strptime(birthday, "%D", birth_struct);
 }

1 个答案:

答案 0 :(得分:0)

除了我在评论中提出的问题之外,您收到错误的原因是strptime返回char *,而不是struct tm *,因此分配给{{1}无效。

birthparse应声明为普通结构,而不是指向结构的指针,您应该将birth_struct的地址赋予birth_struct,例如

strptime

如果解析不成功,则从struct tm birth_struct; // ... strptime(birthday, "%D", &birth_struct); 返回NULL,否则返回解析的最后一个字符的地址。