2013-09-03 4 views
2

나는 정의 목록의 각 노드와, 구조와 연결리스트 사전을 구축하고있어 다음과 같은 : 내가 키 또는 값에 값을 할당있을 때 내가 문제로 실행 해요C에서 구조체 포인터에 값을 할당하는 데 문제가 있습니까?

typedef struct node node; 
struct node 
{                
     int key; 
     char value[ARRAY_MAX]; 
     node *next; 
}; 

입니다 내 삽입 및 makedict 함수 내에서.

node* insert(node* start, char* vinput, int kinput) { 
    node* temp = start; 
    while((temp->next->key < kinput) && temp->next!=NULL) { 
     temp=temp->next; 
    } 
    if(temp->key==kinput) { 
     temp->key = kinput; 
     return temp; 
    } else { 
     node* inputnode = (node*)malloc(sizeof(node)); 
     inputnode->next = temp->next; 
     temp->next = inputnode; 
     inputnode->key = kinput; /*error: incompatible types in assignment*/ 
     inputnode->value = vinput; 
     return inputnode; 
} 

과 :

node* makedict(char* vinput, int kinput) { 
    node* temp = (node*)malloc(sizeof(node)); 
    temp->value = vinput; 
    temp->key = kinput; /*error: incompatible types in assignment*/ 
    temp->next = NULL; 
    return temp; 
} 

나는 아마 믿을 수 없을만큼 분명 뭔가가있어 알아,하지만 난 아무 소용 반복이 코드를 읽어 봤는데 내가 할당에서 다음과 같은 오류를 받았다. 어떤 도움을 주셔서 감사합니다.

+0

을,'경우 (temp-> 키 == kinput)'왜이다 'temp-> key = kinput;'을 다시 할당합니까? : \ –

+0

아, 맞습니다. 약간의 중복 된 코드! 반복되는 주요 입력을 저장하려는 포기한 시도에서 내가 거기에 놓아 두었을 수도 있습니다. 좋은 픽업 :) – user2741466

답변

7

나는 줄

inputnode->value = vinput; 

컴파일러에 대해 불평 무엇을 생각합니다. 또는 더 나은 아직 '값'필드 숯불 * 만들

strcpy(inputnode->value, vinput); 

을 시도하고 빠른 눈에서

inputnode->value = strdup(vinput) 
+1

+1 이것은 [결함이있는 곳]입니다. (http://ideone.com/3sUol9) – WhozCraig

+0

'strdup'는 표준 C가 아닙니다. – verbose

+0

strcpy에 충실 할 확률이 높습니다. 그렇지 않으면 strdup을 정의해야합니다 (ANSI C로 생각하지 않습니다) – user2741466

관련 문제