【发布时间】:2013-11-20 17:21:31
【问题描述】:
我正在做一个项目,该项目需要我创建一个特定结构类型的数组。结构如下:
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 中删除。