将字符数组分配给结构中的字符数组

时间:2013-11-20 17:21:32

标签: c arrays structure

我正在开发一个项目,要求我创建一个特定结构类型的数组。结构如下所示:

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;
}

2 个答案:

答案 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);

将进行适当的边界检查。