Problem C: 字符串转日期(Append Code)
Description
对于用字符串存储的日期,把它的年月日提取出来转换成结构体形式。
-----------------------------------------------------------------------------
编写函数 to_date ():
原型:根据“Append Code”进行设计。
功能:把字符串s中年月日信息提取出来,并用结构体变量返回。
函数的调用格式见“Append Code”,完成结构体类型的定义。
Input
输入若干字符串,每个一行。每个字符串为一个合法的日期,其中前4位表示年份,中间两位表示月份,后2位表示日,位数不足会补0。
Output
按照年月日的顺序输出,两两用一个空格分开。
Sample Input
Sample Output
#include<stdio.h>
struct date{
int y,m,d;
};
//F1
struct date to_date (char s[]){
struct date ds;
ds.y=0;
ds.m=0;
ds.d=0;
for(int i=0;i<4;i++){
ds.y=ds.y*10+s[i]-'0';
}
for(int i=4;i<6;i++){
ds.m=ds.m*10+s[i]-'0';
}
for(int i=6;i<8;i++){
ds.d=ds.d*10+s[i]-'0';
}
return ds;
}
//F2
struct date to_date (char str[]){
struct date ds;
int k;
for(int i=0;i<4;i++){
if(str[i]!=0){
k=i;
break;
}
}
ds.y=0;
ds.m=0;
ds.d=0;
for(int i=k;i<4;i++){
ds.y=ds.y*10+str[i]-'0';
}
for(int i=4;i<6;i++){
if(str[i]!=0){
k=i;
break;
}
}
for(int i=k;i<6;i++){
ds.m=ds.m*10+str[i]-'0';
}
for(int i=6;i<8;i++){
if(str[i]!=0){
k=i;
break;
}
}
for(int i=k;i<8;i++){
ds.d=ds.d*10+str[i]-'0';
}
return ds;
}
//以下为append.c
int main()
{
char str[10];
struct date dt;
while(gets(str) != NULL)
{
dt = to_date(str);
printf("%d %d %d\n", dt.y, dt.m, dt.d);
}
return 0;
}