看板 C_and_CPP 關於我們 聯絡資訊
大家好: 我今天在使用linked list 時侯發生一個問題, 以下是為所宣告的linked list結構 typedef struct stack *stack_pointer; typedef struct element *history; struct stack { history data; stack_pointer link; }; struct element { char *date; char *weight; }; 我想要在我的linked list 中的每個node插入兩個element 分別是 date 和 weight 可是我在插入的部份出了些問題!! 以下為我插入 void add (stack_pointer *top, char *date, char *weight) { // date 和 weight 為我想要插入的element stack_pointer temp = (stack_pointer) malloc (sizeof(stack_pointer)); if(temp==NULL){ printf("The memory is full\n"); exit(0); } temp->data->date=(char *)malloc(sizeof(date)); temp->data->date=date; temp->data->weight=(char *)malloc(sizeof(weight)); temp->data->weight=weight; temp->link= *top; *top=temp; } 上面宣告成 temp->data->date=(char *)malloc(sizeof(date)); 我是想說原先temp->data->date 沒有給予空間儲存 date 所以我在那裏宣告一塊記憶體空間給date儲存!! 我原先是寫成 temp->data->date=date; temp->data->weight=weight; 沒有宣告記憶體空間給temp->data->date ! 不過那時候執行結果也和我下面所描素的執行結果一樣!!! 囧 所以我才把這兩行留著!! temp->data->date=(char *)malloc(sizeof(date)); temp->data->weight=(char *)malloc(sizeof(weight)); 我剛剛有試了一下strcpy (temp->data->date,date); 這方式 但還是不行ˊ.ˋ 囧~ 剛打錯 ============================================================ 但是這樣子假設我插入: AAAA 777 ABBB 888 CCCC 898 DDDD 222 我把這個list中的element的值給印出來看時,我發現他的結果 都為: DDDD 222 DDDD 222 DDDD 222 DDDD 222 想請問一下大家我是不是哪裡寫錯了!!!! 以下是我完整的code http://rafb.net/p/YsTiFo73.html 我讀進來date.dat的格式為 2009/3/18 44 2009/3/18 11 2009/3/18 11 2009/3/18 11 2009/3/18 11 2009/3/18 11 2009/3/18 1111 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.72.235 ※ 編輯: ppp168p 來自: 140.116.72.235 (03/19 23:40)
softwind:你有打算在記憶體中保留資料嗎? 03/20 00:03
a127a127:沒仔細看,不過你怎麼要了一塊記憶體後又指向原來的區塊 03/20 00:18
a127a127:temp->data->date=date這幾行 先改成strcpy吧 03/20 00:18
※ 編輯: ppp168p 來自: 59.113.48.121 (03/20 00:58)
a127a127:唔...你應該去google一下strcpy... 03/20 01:42
※ 編輯: ppp168p 來自: 59.113.48.121 (03/20 08:53) ※ 編輯: ppp168p 來自: 140.116.72.235 (03/20 10:02) ※ 編輯: ppp168p 來自: 140.116.72.235 (03/20 10:02) ※ 編輯: ppp168p 來自: 140.116.72.235 (03/20 10:11) ※ 編輯: ppp168p 來自: 140.116.72.235 (03/20 10:11)