赋值给数组类型的表达式时出错
Error in assignment to expression with array type
我正在尝试编写一个程序,当用户输入 1991 到 2099 之间的年份时显示复活节。一切都很好,但是当我尝试 运行 该程序时,它说有一个错误:赋值给数组类型的表达式。我怎样才能解决这个问题?我的代码有什么问题?
#include <stdio.h>
#include <stdlib.h>
int main()
{
char month[50];
int year, day;
printf("Please enter a year between 1990 and 2099: ");
scanf("%d", &year);
int a = year-1900;
int b = a%19;
int c = (7*b+1)/19;
int d = (11*b+4-c)%29;
int e = a/4;
int f = (a+e+31-d)%7;
int g = 25 - (d + f);
if (g <= 0 )
{
month = "March";
day = 31 + g;
}
else
{
month = "April";
day = g;
}
printf("The date is %s %d", month, day);
}
数组没有赋值运算符。数组是不可修改的左值。
要更改数组的内容,例如使用标准字符串函数 strcpy
。
#include <string.h >
//...
strcpy( month, "March" );
另一种方法是将变量 month 声明为指针。例如
char *month;
或(那个更好)
const char *month;
在这种情况下你可以写
month = "March";
我正在尝试编写一个程序,当用户输入 1991 到 2099 之间的年份时显示复活节。一切都很好,但是当我尝试 运行 该程序时,它说有一个错误:赋值给数组类型的表达式。我怎样才能解决这个问题?我的代码有什么问题?
#include <stdio.h>
#include <stdlib.h>
int main()
{
char month[50];
int year, day;
printf("Please enter a year between 1990 and 2099: ");
scanf("%d", &year);
int a = year-1900;
int b = a%19;
int c = (7*b+1)/19;
int d = (11*b+4-c)%29;
int e = a/4;
int f = (a+e+31-d)%7;
int g = 25 - (d + f);
if (g <= 0 )
{
month = "March";
day = 31 + g;
}
else
{
month = "April";
day = g;
}
printf("The date is %s %d", month, day);
}
数组没有赋值运算符。数组是不可修改的左值。
要更改数组的内容,例如使用标准字符串函数 strcpy
。
#include <string.h >
//...
strcpy( month, "March" );
另一种方法是将变量 month 声明为指针。例如
char *month;
或(那个更好)
const char *month;
在这种情况下你可以写
month = "March";