C 从数组中正确输出字符串有困难吗?
我正在制作一个程序,从用户那里获取日期的一种格式,例如:“01/14/2013”作为字符串,并将其输出为月、日和年格式,或者:“2013年1月14日”。我不明白为什么当我输入日期时它没有正确输出字符串,例如,如果我输入'01',它会正确输出一月,但是如果我输入'02',它根本不会正确输出二月。这是我的节目:C 从数组中正确输出字符串有困难吗?,c,C,我正在制作一个程序,从用户那里获取日期的一种格式,例如:“01/14/2013”作为字符串,并将其输出为月、日和年格式,或者:“2013年1月14日”。我不明白为什么当我输入日期时它没有正确输出字符串,例如,如果我输入'01',它会正确输出一月,但是如果我输入'02',它根本不会正确输出二月。这是我的节目: #include <stdio.h> #include <string.h> int main(void) //int main() is c++, int ma
#include <stdio.h>
#include <string.h>
int main(void) //int main() is c++, int main(void) is C
{
char date[100];
char month[100];
char array[12][100] ={"January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November",
"December"};
printf(" Please enter a date ");
fgets( date, 100, stdin);
if( date[0] == '0' && date[1] == '1')
{
strcpy( month, array[0]);
}
else if( date [0] =='0' && date[1] == '2')
{
strcpy( month, array[1]);
}
printf(" %s", month);
return 0;
}
#包括
#包括
int main(空)/int main()是C++,int main(空格)是c
{
字符日期[100];
半个月[100];
字符数组[12][100]={“一月”、“二月”、“三月”、“四月”、“五月”、“六月”,
“七月”、“八月”、“九月”、“十月”、“十一月”,
“12月”};
printf(“请输入日期”);
fgets(日期,100,标准日期);
如果(日期[0]=“0”&&date[1]=“1”)
{
strcpy(月,数组[0]);
}
else if(日期[0]=“0”&&date[1]=“2”)
{
strcpy(月,数组[1]);
}
printf(“%s”,月);
返回0;
}
而您可以设置一个复杂的解析路由,以自定义方式处理日期。您还可以使用strtime
将字符串转换为日期对象,然后使用strftime
以所需的任何格式将字符串输出到缓冲区。手册页
包含我根据您的情况调整的所有格式说明符和示例。看一看:
#define _XOPEN_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
int
main(int argc, char *argv[])
{
struct tm tm;
char buf[255];
if (argc < 2 ) {
fprintf (stderr, "Error: insufficient input, usage: %s date (mm/dd/yyyy)\n",
argv[0]);
return 1;
}
memset(&tm, 0, sizeof(struct tm));
strptime(argv[1], "%m/%d/%Y", &tm);
strftime(buf, sizeof(buf), "%A, %B %e, %Y", &tm);
printf ("\n The formatted date is: %s\n\n",buf);
return 0;
}
我在我的机器上测试了它,它确实正确地打印了
二月
代码>我也得到了二月
很好。int main()
是有效的C
$ ./bin/s2t 07/08/2014
The formatted date is: Tuesday, July 8, 2014