2013-11-20 122 views
2

我正在研究一个项目,该项目要求我创建特定结构类型的数组。该结构是这样的:将字符数组赋值给结构中的字符数组

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

请在将结构数组传递给函数的地方添加代码。 –

+0

使用strcpy而不是运算符= –

+0

永远不要使用'gets()'。这是危险的,它被弃用,它从C++中删除,应该从C中删除。 –

回答

0

不看你可能想要做的是这样的代码:

struct[4].array = gets(<unknown>); 

这是行不通的,因为你不能从gets将返回的char*到一个数组作为编译器说。您也正在使用gets,因为它不执行边界检查,所以极不鼓励。相反,请执行以下操作:

fgets(struct[4].array, sizeof(struct[4].array), stdin); 

这将进行适当的边界检查。

3

你正在做这样的事情

char a[20]; 
a = "bla"; 

你不能做到这一点。

strcpy(a,"bla");改为。 (#include <string.h>