char赋值数组不起作用

T40*_*000 0 c++ arrays char switch-statement

我试图在switch语句中改变我的char数组[10]的值,这样,如果我们有case 1,我的char数组[10] ="january",或者如果我们有case 2,那么array [10] ="二月"等等.问题是我得到错误信息,我知道我做错了什么.任何帮助将非常感激.这是我用Dev-C++编写的switch语句.

char month[10];
switch (i)
{
 case 1:
       month[10]="January";
      cout<<month<<endl;
      break; 
 case 2:
       month[10]="February";
      cout<<month<<endl;
      break;
} 
Run Code Online (Sandbox Code Playgroud)

Luc*_*ore 5

您无法分配这样的char数组,您需要使用它strcpy.

或者更好的是,使用std::string它,这是C++的事情.

std::string month;
switch (i)
{
 case 1:
       month="January";
      cout<<month<<endl;
      break; 
 case 2:
       month="February";
      cout<<month<<endl;
      break;
} 
Run Code Online (Sandbox Code Playgroud)

或者如果你必须坚持char[]:

char month[10];
switch (i)
{
 case 1:
      strcpy(month,"January");
      cout<<month<<endl;
      break; 
 case 2:
      strcpy(month,"February");
      cout<<month<<endl;
      break;
} 
Run Code Online (Sandbox Code Playgroud)

你收到错误的原因month[10]是a char,而你正在尝试分配const char*它,这是非法的.(实际上它是未定义的行为,因为10超出了数组的长度).