C 从数组中正确输出字符串有困难吗?

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

我正在制作一个程序,从用户那里获取日期的一种格式,例如:“01/14/2013”作为字符串,并将其输出为月、日和年格式,或者:“2013年1月14日”。我不明白为什么当我输入日期时它没有正确输出字符串,例如,如果我输入'01',它会正确输出一月,但是如果我输入'02',它根本不会正确输出二月。这是我的节目:

#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