文件保存 链表应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
void sort(int a[],int n);
int main()
{
int i;
int a[6];
printf("请输入6 个数:\n");
for(i=1;i<=6;i++)
scanf("%d",&a[i]);
sort(a,6);
printf("直接选择排序后的结果如下:\n");
for(i=1;i<=6;i++)
printf("%d\n",a[i]);
}
void sort(int a[],int n)
{
int i,j,k;
for(i=1;i
{
for(k=i,j=i+1;j<=n;j++)
if(a[k]>a[j])
k=j;
if(i!=k)
{
a[0]=a[k];
a[k]=a[i];
a[i]=a[0];
}
}
}
#include
#include
#include
#include
#define ESC 27
#define Enter 13
#define BackSpace 8
typedef struct Link2
{ char username[25]; //用户名
char password[16]; //登录密码
// Diary *diarys_list; //该用户拥有的日记链表
struct Link2 *next;
} User;
//void readfromfile(User*a);
User* initUser(User*a);
User* AddNewUser(User*a);
void display(User*a);
void writetofile(User*a);
User* readfromfile(User*a);
User* initUser(User*a)
{
a=(User*)malloc(sizeof(User));
a->next=NULL;
return a;
}
User* AddNewUser(User*a)
{
char str1[20],str2[20];
int i,j,n;
j=0;
User *p,*r;
r=a;
printf("请输入所要添加用户的个数:\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
p=(User*)malloc(sizeof(User));
printf("\n请输入用户名:\n");
scanf("%s",&p->username);
printf("请输入用户密码:\n");
//scanf("%s",&p->password);
while(str1[j]=getch()!=Enter)
{
str2[j]=str1[j];
str1[j]='*';
printf("%c",str1[j]);
j++;
}
str2[j]='\0';
strcpy(p->password,str2);
p->next=NULL;
r->next=p;
r=r->next;
}
return a;
}
void display(User*a)
{ int i;
i=1;
User*p;
p=a->next;
printf("\n");
printf("有如下用户:\n");
while(p!=NULL)
{
printf("第%d个用户:",i);
printf("%s\n",p->username);
p=p->next;
i++;
}
}
void writetofile(User*a)
{
FILE*fp;
User*p;
p=a;
char Filename[20];
printf("请输入文件名或路径:");
scanf("%s",Filename);
fp=fopen("Filename","w");
if(fp==NULL)
{
printf("文件创建失败!");
exit(0);
}
else
{
while(p!=NULL)
{
fwrite(p,sizeof(User),1,fp);
p=p->next;
}
}
fclose(fp);
}
User* readfromfile(User*a)
{
FILE *fp;
a=initUser(a);
User*p,*r;
char Filename[20];
r=a;
printf("请输入要打开的文件名:");
scanf("%s",Filename);
fp=fopen("Filename","r");
if(fp==NULL)
{
printf("文件打开失败!");
exit(0);
}
else
{
whi
le(!feof(fp))
{
p=(User*)malloc(sizeof(User));
fread(p,sizeof(User),1,fp);
return p;
if(fread(p,sizeof(User),1,fp)!=1)
{
free(p);
break;
}
p->next=NULL;
r->next=p;
r=r->next;
}
}
fclose(fp);
return a;
}
int main()
{
int i;
User*a=NULL,*b=NULL;
a=initUser(a);
b=initUser(b);
a=AddNewUser(a);
display(a);
writetofile(a);
b=readfromfile(b);
//display(a);
display(b);
}