读书人

关于C语言链表的有关问题

发布时间: 2012-02-16 21:30:36 作者: rapoo

关于C语言链表的问题
在下面的程序中,输入和输出都对不上号,请各位帮忙解释一下,先谢过了。
程序代码:
#include <stdio.h>
#define maxsize 100

struct student
{ char num[10];
char name[10];
char sex[2];
char tel[15];
char addr[50];
};
struct list
{ int len;
struct student stu[maxsize];
};


struct list ListInit(struct list L)
{ L.len=0;
return(L);
}


struct list ListCreate(struct list L)
{ int i=0;
char x1[10],x2[10],x3[2],x4[15],x5[50];
char ch;
do
{ printf( "\nNum: "); fflush(stdin);
scanf( "%c ",&x1); fflush(stdin);
printf( "\nName: ");
scanf( "%c ",&x2); fflush(stdin);
printf( "\nSex: ");
scanf( "%c ",&x3); fflush(stdin);
printf( "\nTel: ");
scanf( "%c ",&x4); fflush(stdin);
printf( "\nAddr: ");
scanf( "%c ",&x5); fflush(stdin);
strcpy(L.stu[i].num,x1[10]);
strcpy(L.stu[i].name,x2[10]);
strcpy(L.stu[i].sex,x3[2]);
strcpy(L.stu[i].tel,x4[15]);
strcpy(L.stu[i].addr,x5[50]);
i++;
ch=getchar();
} while(ch!= '0 ');
L.len=i;
return(L);
}


void ListPrint(struct list L)
{ int i;
for(i=0;i <L.len;i++)
{ printf( "\nNum:%s\nName:%s\nSex:%s\nTel:%s\nAddr:%s\n ",L.stu[i].num,L.stu[i].name,L.stu[i].sex,L.stu[i].tel,L.stu[i].addr);
}
printf( "\n ");
}


void main()
{ struct list L;
L=ListCreate(L);
ListPrint(L);
}


[解决办法]
#include <stdio.h>
#include <string.h> ////错误1,头文件没包括
#define maxsize 100 ///这个你也没用

struct student
{
char num[10];
char name[10];
char sex[2];
char tel[15];
char addr[50];
};
struct list
{
int len;
struct student stu[maxsize];
};


struct list ListInit(struct list L)///你这个仿佛没用到吧
{
L.len=0;
return(L);
}


struct list ListCreate(struct list L)


{
int i=0;
char x1[10],x2[10],x3[2],x4[15],x5[50];
char ch;
do
{
printf( "\nNum: "); fflush(stdin);
scanf( "%s ",x1); fflush(stdin); ///输入时为地址,而x1本身已经是地址了,所以
///不能再取地址,一下五个输入错误相同
printf( "\nName: ");
scanf( "%s ",x2); fflush(stdin);
printf( "\nSex: ");
scanf( "%s ",x3); fflush(stdin);
printf( "\nTel: ");
scanf( "%s ",x4); fflush(stdin);
printf( "\nAddr: ");
scanf( "%s ",x5); fflush(stdin);
strcpy(L.stu[i].num,x1); ///参数均为指针,你这里第一个参数对,第二个参数
///错了,第二个也应该是指针,不能写成x[10]。
strcpy(L.stu[i].name,x2);
strcpy(L.stu[i].sex,x3);
strcpy(L.stu[i].tel,x4);
strcpy(L.stu[i].addr,x5);
i++;
ch=getchar();
} while(ch!= '0 ');
L.len=i;
return(L);
}


void ListPrint(struct list L)
{
int i;
for(i=0;i <L.len;i++)
{
printf( "\nNum:%s\nName:%s\nSex:%s\nTel:%s\nAddr:%s\n ",L.stu[i].num,L.stu
[i].name,L.stu[i].sex,L.stu[i].tel,L.stu[i].addr);
}
printf( "\n ");
}


void main()
{
struct list L;
L=ListCreate(L);
ListPrint(L);
}

读书人网 >C语言

热点推荐