[問題] 鏈結串列的字串列印問題
( *[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
01/10 21:22, 1F
→
01/10 21:22, , 2F
01/10 21:22, 2F
討論串 (同標題文章)