2017-02-05 3 views
0

배열을 채웠으므로 해당 구조체 필드에 할당해야합니다.char 배열의 구조체 값을 채우십시오.

char array1[MaxLine] = "bob"; 
char array2[MaxLine] = "rick"; 
char array3[MaxLine] = "dan"; 

그럼 그들이하는 말을 그대로 할 수 있습니다. 헤더 파일에 선언 된 구조체가 있고이 함수는 두 번째 소스에 있으며, main에서 분리되어 있습니다. 이러한 배열에서 값을 채우기 위해 어떻게이 별도의 함수에서 구조체에 액세스 할 수 있습니다.

이 추가 .. 구조체에 접근이 방법으로 그것을 채우기 위해 그것을 사용 후 ..

내가 필러라는 변수를 선언 시도

struct structname filler; 

strcpy(filler->firstfield, input); 
strcpy(filler->secondfield, input); 

하지만 액세스 위반이 계속 발생합니다.

+0

@chrk이 (가) 죄송합니다. – AerisNeo

+0

구조체에'->'를 사용할 수 없으면 컴파일러 메시지를 확인하십시오. –

+0

스택 오버플로에 오신 것을 환영합니다. 곧 [About] 및 [Ask] 페이지를 읽어보십시오. 그러나 MCVE ([MCVE])를 만드는 방법에 대해 더 자세히 읽어보십시오. 지금까지 질문에 포함시킨 내용은 MCVE가 아닙니다. 중요한 정보가 누락되어 엄청난 양의 누락 된 부분이있을 수 있습니다. 일반적으로'strcpy()'를 사용하여 고정 된 데이터를 구조체의 적절한 크기의 배열에 복사하는 것이 좋습니다. 포인터가 아니라 배열이라면, 복사하기 전에 메모리를 할당해야합니다. –

답변

0

인수로 전달해야합니다. 예를 들어 컴파일러를 실행하면

#include "MyStruct.h" //declares the struct 
#include "MyFunctions.h" // where the function is 

int main() 
{ 
    struct MyStruct instance; 

    assignFields(&instance); 

    //instance is now assigned 
} 

//In MyFunctions.h you declare your function 
#include "MyStruct.h" //Needs to know about the struct 
void assignField(MyStruct*); 


//Then you implement it in the .c file 
void assignFields(MyStruct* localInstance) 
{ 
    //call strcpy here 
    //assuming the input strings are available her 
    //otherwise you have to pass them in as well 

} 

, 그것은 다음 링커는 하나 개의 실행 프로그램에 함께이 개 .c 인 파일을 넣어, 서명을 파악하고 개별적으로 각 파일을 컴파일하려면 .H 파일을 사용합니다.