2013-11-20 3 views
2

특정 구조체 형식의 배열을 만들어야하는 프로젝트 작업 중입니다. 구조는 다음과 같다 :구조체의 문자 배열에 문자 배열 할당

typedef struct 
{ 
char array[30]; 
int num; 
}structure 

은이 같은 이러한 구조의 배열을 선언 :

structure struct1[5]; 

I 문자열과 함께 처음 네 요소를 채우는 기능이 구조 배열을 통과 번호. 다섯 번째는 비어 있습니다. 나중에 프로그램에서 배열을 다시 전달하고 구조체의 문자열을 gets()를 사용하여 사용자가 결정한 문자열로 설정하려고합니다. 이 오류가 발생합니다 :

438:19: error: incompatible types when assigning to type 'char[30]' from type 'char *' 

자세한 설명이 필요하면 알려주십시오.

감사합니다.

편집 : 당신은 당신이 이렇게 기운이

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

같은 일을하고있다

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와 not 연산자를 사용 = –

+0

결코'gets()'를 사용하지 마십시오. 그것은 위험합니다, 그것은 비난입니다, 그것은 C에서 제거 + + C에서 너무 제거해야합니다. –

답변

0

당신은 아마 그런 짓을하려고하는 코드를 보지 않고 컴파일러가 말한다. gets도 사용하고 있으며 경계 검사를 수행하지 않으므로 사용하지 않는 것이 좋습니다. 대신 다음을 수행하십시오.

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

적절한 경계 검사가 수행됩니다.

3

: 여기에 내가 뭐하는 거지입니다.

do strcpy(a,"bla"); 대신. 당신은 같은 배열에 gets에서 반환 된 char*를 할당 할 수 없습니다로 작동하지 않습니다

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

: (#include <string.h>)