c语言程序如何保存进度,c语言进度显示怎么编写

#include

#include

int _tmain(int argc, _TCHAR* argv[])

{

printf("Down load the file \"A.rm\"\n");

int i = 0;

for (i = 0; i < 10; i++)

{

printf("█ ");

Sleep(500);

}

printf("\n");

printf("Finish the task succeed!\n");

return 0;

}

-----------------------------------------------------

这里有个现成的!拿去改改就行了!! #include #include #include #include #include typedef struct node{ /* 定义链表 */ char name[20]; /* 姓名 */ char address[40]; /* 地址 */ char phone[15]; /* 电话 */ long zip; /* 邮编 */ struct node *next; }add_list; struct person{ /* 定义一个结构备用 */ char name[20]; char address[50]; char phone[15]; long zip; }; FILE *fp; add_list *tail,*head; /* 定义链表尾节点指针和头指针 */ /* 从文件中读出数据生成通讯录链表,如果文件不存在,生成空链表 */ add_list *load(char filename[]) { add_list *new1,*head; struct person t; head=(add_list *)malloc(sizeof(add_list)); tail=head=NULL; if((fp=fopen(filename,"rb"))==NULL) return head; else if(!feof(fp)) if(fread(&t,sizeof(struct person),1,fp)==1) { new1=(add_list *)malloc(sizeof(add_list)); /* 连入链表第一个节点 */ strcpy(new1->name,t.name); strcpy(new1->address,t.address); strcpy(new1->phone,t.phone); new1->zip=t.zip; head=tail=new1; new1->next=NULL; while(!feof(fp)) /* 连入链表其余节点 */ { if(fread(&t,sizeof(struct person),1,fp)==1) { new1=(add_list *)malloc(sizeof(add_list)); strcpy(new1->name,t.name); strcpy(new1->address,t.address); strcpy(new1->phone,t.phone); new1->zip=t.zip; tail->next=new1; new1->next=NULL; tail=new1; } } } fclose(fp); return head; } /* 自定义函数,进度条 */ void jindutiao(void) { int i; for(i=0;i<78;i++) putchar('.'); printf("\r\a"); for(i=0;i<78;i++) { if(i==0) putchar('|'); Sleep(100); printf("\b|>"); } } /* 插入一条通讯录记录 */ void insert(add_list **head) { add_list * new1; new1=(add_list *)malloc(sizeof(add_list)); system("cls"); printf("\n请输入姓名:"); getchar();gets(new1->name); printf("\n请输入地址:"); scanf("%s",new1->address); printf("\n请输入电话:"); scanf("%s",new1->phone); printf("\n请输入邮编:"); scanf("%ld",&new1->zip); if(*head==NULL) /* 表头为空时 */ { *head=new1; new1->next=NULL; tail=new1; } else /* 插入到表尾 */ { tail->next=new1; new1->next=NULL; tail=new1; } printf("输入完成,按回车键返回......"); getchar(); getchar(); } /* 将通讯录链表中的内容保存到指定文件中 */ void save(add_list *head,char filename[]) { add_list *p; struct person t; if((fp=fopen(filename,"wb"))==NULL) { printf("错误:不能打开文件%s\n",filename); exit(1); } else { p=head; while(p!=NULL) { strcpy(t.name,p->name); strcpy(t.address,p->address); strcpy(t.phone,p->phone); t.zip=p->zip; fwrite(&t,sizeof(struct person),1,fp); p=p->next; } } fclose(fp); printf("保存成功,按回车键返回......"); getchar();getchar(); } /* 显示通讯录内容 */ void display(add_list *head) { add_list *p; p=head; if(p!=NULL) printf("姓名:\t\t住址:\t\t邮编:\t\t电话:\n"); while(p!=NULL) { printf("%s\t\t%s\t\t%ld\t\t%s\n",p->name,p->address,p->zip,p->phone); p=p->next; } printf("按回车键返回......"); getchar();getchar(); } /* 按姓名查询通讯录记录 */ int search(add_list *head) { add_list *p; char name[20]; int flag=0; printf("请输入要查找的人的姓名:"); getchar(); gets(name); p=head; while(p!=NULL) { if(strcmp(name,p->name)==0) { printf("姓名:\t\t住址:\t\t邮编:\t\t电话:\n"); printf("%s\t\t%s\t\t%ld\t\t%s\n",p->name,p->address,p->zip,p->phone); flag=1; } p=p->next; } return flag; } /* 按姓名删除一条通讯录记录 */ int delete1(add_list **head) { add_list *p,*q,*t; char name[20],c; int flag=0; printf("请输入要删除人的姓名:"); scanf("%s",name); q=p=*head; while(p!=NULL) { if(strcmp(name,p->name)==0) /* 找到要删除的人 */ { printf("姓名:\t\t住址:\t\t邮编:\t\t电话:\n"); printf("%s\t\t%s\t\t%ld\t\t%s\n",p->name,p->address,p->zip,p->phone); printf("真的要删除吗?(Y:是,N:否)\n"); /* 征求意见(删&不删) */ getchar();c=getchar(); if(c=='y'||c=='Y') /* 删除 */ { if(p==*head) *head=p->next; else q->next=p->next; t=p; p=p->next; free(t); flag=1; } else /* 不删,跳过 */ { q=p; p=p->next; flag=1; } } else /* 没找到,继续 */ { q=p; p=p->next; } } return flag; printf("按回车键返回......"); getchar(); } /* 显示菜单并选择菜单项 */ int menu_select() { char c; system("cls"); printf("\t\t********************通讯录********************\n"); printf("\t\t\t 1:输入新的通讯记录\n"); printf("\t\t\t\t 2:删除记录\n"); printf("\t\t\t\t 3:查找\n"); printf("\t\t\t\t 4:保存文件\n"); printf("\t\t\t 5:浏览所有通讯记录\n"); printf("\t\t\t\t 6:退出\n"); do{ printf("请输入你的选择(1~~6):"); c=getchar(); }while(c'6'); return c; } /* 主函数 */ int main(void) { char filename[20]; char c; int t; printf("\n\n\n\n\n\n\t\t\t\t通讯录启动中...\n\n\n\n\n\n\n\n\n\n\n\n\n"); jindutiao(); system("cls"); printf("请输入通讯录文件名称:\n"); scanf("%s",filename); getchar(); head=load(filename); while(1) { c=menu_select(); switch(c) { case '1': insert(&head); break; case '2': t=delete1(&head); if(!t) printf("记错了吧,没这人!\n按回车键返回......"); getchar();getchar(); break; case '3': t=search(head); if(!t) printf("天啊!居然没找到!\n按回车键返回......");getchar(); break; case '4': save(head,filename); break; case '5': display(head); break; case '6': exit(0); } } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值