创建结构并显示它们 date\u create从datestr datestr的格式应为“dd/mm/yyyy”

创建结构并显示它们 date\u create从datestr datestr的格式应为“dd/mm/yyyy”,c,struct,C,Struct,基本上,我在创建部分遇到了一些问题,我需要一些帮助来创建一个输入,比如说2013年11月2日,然后这些数据将被添加到指针中,然后我必须以块的形式显示它们,例如02表示日期,11表示月份,2013表示年份。。。有什么办法可以继续吗?我必须使用malloc函数 使用和/strtol族从字符串中提取整数值 或者,您可以使用来执行此操作 使用malloc分配类型的结构,并用提取的值填充字段 将分配的指针返回到结构 可能是这样的 Date *date_create(char *datestr); s

基本上,我在创建部分遇到了一些问题,我需要一些帮助来创建一个输入,比如说2013年11月2日,然后这些数据将被添加到指针中,然后我必须以块的形式显示它们,例如02表示日期,11表示月份,2013表示年份。。。有什么办法可以继续吗?我必须使用malloc函数

  • 使用和/strtol族从字符串中提取整数值
  • 或者,您可以使用来执行此操作

  • 使用malloc分配类型的结构,并用提取的值填充字段

  • 将分配的指针返回到结构

    • 可能是这样的

      Date *date_create(char *datestr);  
      struct datestr { 
          int date; 
          int month; 
          int year;  
      } 
      
      char *datestr = (char*)malloc(sizeof(char)*size);
      

      试试这个,试着找出它对你的书的作用:

      typedef struct 
      { 
          int day; 
          int month; 
          int year;  
      } 
      datestructure;
      
      datestructure date_create(const char *datestr)
      {
        datestructure ret; // return value
        char* datestrDup = strdup(datestr); // alloc/copy
      
        ret.day = strtok(datestrDup,"/"); 
        ret.month = strtok(NULL,"/");
        ret.year = strtok(NULL," ");
      
        free(datestrDup);
        return ret;
      }  
      

      在这一点上是值得的投资。你根本不需要指针。编译器将很乐意在赋值或返回值中为您复制结构。您如何从这里继续?我给自己找了一本c书,但我还是有点困惑
      typedef struct _dates
      { 
         int date; 
         int month; 
         int year;
      } DateStr;
      
      DateStr * date_create(char *datestr);
      
      int main(int argc, char* argv[])
      {
         DateStr *result;
         char inputString[100];
         printf("Enter the date: ");
      
          if (gets(inputString))
          {
              result = date_create(inputString);
      
              if (result)
              {
                  printf("Parsed date is Date:%d, Month:%d, Year:%d",result->date, result->month, result->year);
              }
          }
      
          return 0;
      } 
      
      
      DateStr * date_create(char *datestr)
      {
          DateStr * date = (DateStr *)malloc(sizeof(DateStr));
      
          if (date)
          {
              sscanf(datestr, "%d/%d%/%d",&date->date, &date->month, &date->year);
          }
      
          return date;
      }