2016-04-29 21 views
-2

私は適切なリンクリストを作成するコードを書いています。このプログラムerrors while compilingこのコードをコンパイル中にエラーが発生しました

#include <stdio.h> 
    #include <string.h> 
    #include <stdlib.h> 
    typedef void* cadtpointer; 
    struct cadtlist 
    { 
     cadtpointer data; 
     struct cadtlist* next; 
    }; /* structure*/ 

    struct cadtlist* cadt_list_init() 
    { 
     struct cadtlist * temp, * head,* list; 
     int num; 
     char *p, s[100]; 
     printf(" enter the number of nodes to be created"); 
     while (fgets(s, sizeof(s), stdin)) 
     { 
      num = strtol(s, &p, 10); 
      if (p == s || *p != '\n') 
      { 
       printf("Please enter an integer: "); 
      } 
      else break; 
     } 
     while (num != 0) 
     { 
     if(NULL != list) 
     { 
      list->next = cadt_create_list(temp); 
      } 
     else 
     { 
      list = cadt_create_list(temp); 
      head = list; 
     } 
     num--; 
     } 


    } 
    struct cadtlist* cadt_create_list(struct cadtlist * list) 
    { 
    int n; 
    char * data; 
    struct cadtlist * newnode; 
    newnode = (struct cadtlist *) malloc(sizeof(struct cadtlist)); 
    if(NULL != newnode) 
    { 
     printf(" enter the data to be added"); 
     scanf("%s", data); 
     n= cadt_add_list(data,newnode); 
     if(1 == n) 
     return newnode; 
    } 
    else 
    { 
     printf(" error while allocating memory"); 
     exit(1); 
    } 
    } 
    struct cadtlist* cadt_add_list(char* item,struct cadtlist * list) 
    { 
    list->data = item; 
    if(NULL == list->data) 
    { 
     return list; 
    } 
    else 
    { 
     printf(" error while adding data"); 
     exit(1); 
    } 
    } 

int main() 
{ 
    struct cadtlist* list1; 
    list1 = cadt_list_init(); 

    return 0; 
    } 
+0

変更は、テキストを投稿し、テキストの画像を投稿しないでください。コピー/ペーストであなたは知っています... –

+0

まず、 'cadt_create_list()'関数の前方宣言が必要です。 –

+0

ようこそ! ['malloc()'と 'C 'のファミリーの戻り値をキャストしない理由についてのこのディスカッションを参照してください。](http://stackoverflow.com/q/605845/2173917)。 –

答えて

0

1)でエラーを教えてください - 使用のプロトタイプを、それらの前方宣言

2)のために - あなたは、ローカル変数

char * data; /* Local variable */ 
struct cadtlist * newnode; 
newnode = (struct cadtlist *) malloc(sizeof(struct cadtlist)); 
if(NULL != newnode) 
{ 
    printf(" enter the data to be added"); 
    scanf("%s", data); 
    n= cadt_add_list(data,newnode); /* Passing local variable */ 

のアドレスを渡すとassignigningされていますアドレスを別の変数に設定する

struct cadtlist* cadt_add_list(char* item,struct cadtlist * list) 
{ 
    list->data = item; 

cadt_create_list()からの出口、dataが利用できなくなった(ごみを含んでいてもよい)

struct cadtlist* cadt_add_list(char* item,struct cadtlist * list) 
{ 
    list->data = strdup(item); /* Reserve space for the string */ 
関連する問題