创建结构并显示它们 date\u create从datestr datestr的格式应为“dd/mm/yyyy”
基本上,我在创建部分遇到了一些问题,我需要一些帮助来创建一个输入,比如说2013年11月2日,然后这些数据将被添加到指针中,然后我必须以块的形式显示它们,例如02表示日期,11表示月份,2013表示年份。。。有什么办法可以继续吗?我必须使用malloc函数创建结构并显示它们 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
- 使用和/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;
}