该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
//从文件读取数据到链表
int read_file_to_link(struct a *listadress,FILE *fp)
{
if(listadress == NULL && fp == NULL)
{
printf("链表或文件不存在!\n");
return 0;
}
while(listadress)
{
fscanf(fp, "%s", listadress->name);
listadress = listadress->next;
}
return 1;
}
//遍历链表
int print_link(struct a *listadress)
{
if(listadress == NULL)
{
printf("链表不存在!\n");
return 0;
}
while(listadress)
{
printf("%s", listadress->name);
listadress = listadress->next;
}
}
//主函数
int main()
{
int c, MemberNamber;
char FileName[30];
FILE *fp;
struct a *listadress;
printf("请输入文件名:\n");
scanf("%s", &FileName);
getchar();
if((fp = fopen(FileName,"r+")) != NULL) //判断文件是否读入成功
{
while((c=fgetc(fp)) != EOF) //用循环判断文件内含成员个数 (利用‘\n’)
{
if(c=='\n')
{
MemberNamber++;
}
}
if((listadress = creat(MemberNamber)) && read_file_to_link(listadress, fp)) //判断用文件内成员数据创建新链表是否成功
{
printf("读入文件成功! 当前有%d名成员\n", MemberNamber);
}
else
{
printf("出错啦!读取数据建立失败!\n");
}
}
else
{
printf("出错啦!读取数据建立失败!\n");
}
printf("按任意键输出链表内容:\n");
print_link(listadress);
}