2016-10-04 5 views
-1

파일에서 문자열 (한 줄씩)을 읽고 링크 된 목록에 저장해야합니다. 나는 파일에서 읽을 수 있고 그들을 인쇄 할 수 있습니다. 그러나 링크 된 목록에 저장하는 방법은 문제가 있습니다. 나는 연결된 목록을 만들고 아래처럼 저장하려고 시도했다 :링크 된 목록 : C 언어의 문자열 읽기

#include <stdio.h> 
#include <stdlib.h> 


typedef struct node 
{ 
    char data[256]; 
    struct node *next; 

} node_t; 

node_t *head = NULL; 
node_t *current = NULL; 

int main(int argc, char const *argv[]) 
{ 
    char temp = 'Hello'; 
    insertToHead(temp); 
    return 0; 
} 

void insertToHead(char *word) 
{ 
    node_t *link = (node_t *) malloc(sizeof(node_t)); 

    link->data = strcpy(link->data , word); 

    link->next = head; 
    head = link; 
} 
+0

그리고 질문은 무엇을? 전역 변수를 남용하고 문자열 만 복사하는 것이 아니라 포인터 만 복사하는 것 외에도 코드는 지금까지는 괜찮아 보입니다. –

+3

"작동하지 않습니다."정말 유용한 설명이 아닙니다. –

+2

'strcpy (link-> data, c)'. 배열에 할당 할 수 없습니다. –

답변

1

많은 문제가있다.

나는 여기에 고정 이제 프로그램은 적어도 컴파일 : 당신은 정말 당신의 컴파일러의 출력을 읽는 방법을 배워야한다

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 


typedef struct node 
{ 
    char data[256]; 
    struct node *next; 

} node_t; 

node_t *head = NULL; 
node_t *current = NULL; 

void insertToHead(char *word) 
{ 
    node_t *link = (node_t *) malloc(sizeof(node_t)); 

    strcpy(link->data , word); 

    link->next = head; 
    head = link; 
} 

int main(int argc, char const *argv[]) 
{ 
    char *temp = "Hello"; 
    insertToHead(temp); 
    return 0; 
} 

.

+0

@ 코더 아니, 완벽하게 맞습니다. 'temp'는 문자열 리터럴''Hello "'를 가리 킵니다. –

+0

@MichaelWalz THX 남자. 나는 그것을 배우는 중이다. 최선의 방법인가? 또는 연결된 목록에 문자열을 푸시하는 더 좋은 방법이 있습니다 – Soulmaster

+0

@MichaelWalz 어쩌면 제가 누락되었지만, 충분한 메모리가없는 경우 어떻게할까요? char * temp = "Hello"; 당신은 메모리가 할당되어서는 안된다. – coder

1

이 적지 구문 문제가 있었다 당신은 문자열 라이브러리를 포함해야한다 :

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

typedef struct node { 
    char data[256]; 
    struct node *next; 
} node_t; 

node_t *head = NULL; 
node_t *current = NULL; 

void insertToHead(char *word) { 
    node_t *link = (node_t *) malloc(sizeof(node_t)); 

    strcpy(link->data , word); 

    link->next = head; 
    head = link; 
} 

int main(int argc, char const *argv[]) { 
    char *temp = "Hello"; 

    insertToHead(temp); 
    return 0; 
} 

편집

I was trying to solve the issue when @MichaelWalz already posted the solution