[問題] 鏈結串列的字串列印問題

看板C_and_CPP作者 (阿中)時間15年前 (2010/01/10 13:16), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串1/2 (看更多)
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 在鏈結串列中有放入字串資料 原本想用char name[][]的二維陣列去存 但是在print的時候字串會變成亂碼QQ 是改printlist的function還是改當初宣告的方式? 這個部分應該要怎麼修改呢? 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Dev -C++ 有問題的code: (請善用置底文標色功能) #include<stdlib.h> #include<stdio.h> struct node { int num; char name[10]; float weight; int sex; int score; struct node *next; }; typedef struct node NODE; NODE *createlist(int *,char *,int *,float *,int *,int); void printlist(NODE *); void freelist(NODE *); int main(void){ int i; NODE *first; int num[]={109,201,159,163,200}; float weight[]={79.1,60.3,81.4,76.6,62.3}; char name[5][10]={"John","Mary","Peter","Kelly","Gloria"}; int sex[]={0,1,0,1,0}; int score[]={100,70,60,80,50}; first=createlist(num,name[10],sex,weight,score,5); printlist(first); freelist(first); system("pause"); return 0; } NODE *createlist(int *num,char *name, int *sex,float *weight,int *score,int len) { int i; NODE *first,*current,*previous; for(i=0;i<len;i=i+1){ current=(NODE *)malloc(sizeof(NODE)); current->num=num[i]; current->name[i]=name[i]; current->weight=weight[i]; current->sex=sex[i]; current->score=score[i]; if(i==0){ first=current; } else{ previous->next=current; } current->next=NULL; previous=current; } return first; } void printlist(NODE *first) { NODE* node=first; if(first==NULL){ printf("list is empty!\n"); } else{ while(node!=NULL) { printf("num=%d\t",node->num); printf("name=%s\t",node->name); printf("weight=%0.1f\t",node->weight); printf("sex=%d\t",node->sex); printf("score=%d\t",node->score); node=node->next; printf("\n"); } } } void freelist(NODE *first) { NODE *current,* tmp; current=first; while(current!=NULL){ tmp=current; current=current->next; free(tmp); } } 補充說明: 如果可以麻煩回答的大大儘量解釋得清楚些^^ 因為小弟學C到目前才學一學期XP 謝謝您的回答!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.212.151 ※ 編輯: win900702 來自: 140.114.212.151 (01/10 21:18)

01/10 21:22, , 1F
first=createlist(num,name[10],sex,weight,score,5);
01/10 21:22, 1F

01/10 21:22, , 2F
上面那一行有問題 tip:char **和char *是不一樣的東西
01/10 21:22, 2F
文章代碼(AID): #1BITCUiZ (C_and_CPP)
文章代碼(AID): #1BITCUiZ (C_and_CPP)