创建一个结构并显示它们

时间:2013-10-14 05:52:36

标签: c struct

Date *date_create(char *datestr);  
struct datestr { 
    int date; 
    int month; 
    int year;  
} 

char *datestr = (char*)malloc(sizeof(char)*size);
  • date_createdatestr
  • 创建数据结构 预计
  • datestr的形式为“dd / mm / yyyy”

基本上我在创建部分遇到一些问题我需要一些帮助来创建让我们说一个输入02/11/2013然后这个数据将被添加到指针然后我必须用块显示它们例如02表示日期,11表示月份和2013年表示...任何想法如何从这里继续?我将不得不使用malloc函数?

3 个答案:

答案 0 :(得分:0)

  • 使用strtokatoi / strtol系列从字符串中提取整数值
  • 或者,您可以使用scanf执行此操作

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

  • 返回分配给结构的指针

答案 1 :(得分:0)

也许是这样的

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;
}  

答案 2 :(得分:0)

试试这个,并尝试弄清楚它对你的书的作用:

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;
}