我正在研究一个项目,该项目要求我创建特定结构类型的数组。该结构是这样的:将字符数组赋值给结构中的字符数组
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;
}
请在将结构数组传递给函数的地方添加代码。 –
使用strcpy而不是运算符= –
永远不要使用'gets()'。这是危险的,它被弃用,它从C++中删除,应该从C中删除。 –