我正在开发一个项目,要求我创建一个特定结构类型的数组。结构如下所示:
typedef struct
{
char array[30];
int num;
}structure
我已经声明了这样的结构数组:
structure struct1[5];
我将这个结构数组传递给一个函数,该函数用字符串和数字填充前四个元素。第五个留空。稍后在程序中,我再次传递数组并尝试使用gets()将结构中的字符串设置为用户确定的字符串。我收到了这个错误:
438:19: error: incompatible types when assigning to type 'char[30]' from type 'char *'
如果我需要提供更多说明,请告诉我。
谢谢!
编辑:这就是我在做的事情:typedef struct
{
char array[30];
int num;
}structure;
void fillStructs(structure[]);
void userEditStructs(structure[]);
main()
{
structure myStructs[5];
fillStructs(myStructs);
userEditStructs(myStructs);
return 0;
}
void fillStructs(structure s[])
{
//code to fill myStructs elements 0-3.
}
void userEditStructs(structure s[])
{
char newArr[30];
int newNum;
printf("Please enter your string:\n\nEntry:\t");
gets(newArr);
printf("Please enter your number:\n\nEntry:\t");
scanf("%i", newNum);
s[5].array = newArr;
s[5].num = newNum;
}
答案 0 :(得分:3)
你正在做这样的事情
char a[20];
a = "bla";
你不能这样做。改为strcpy(a,"bla");
。 (#include <string.h>
)
答案 1 :(得分:0)
如果不查看代码,您可能会尝试执行以下操作:
struct[4].array = gets(<unknown>);
这将无法正常工作,因为您无法像编译器那样将返回的char*
从gets
分配给数组。您还使用gets
,强烈建议您不要执行边界检查。相反,请执行以下操作:
fgets(struct[4].array, sizeof(struct[4].array), stdin);
将进行适当的边界检查。