void xuqian(struct student *head) { FILE *fp; int flag=0; double money; char num[30]; struct student *p1,*p2; printf("学号: \n"); scanf("%s",num); p1=head; while(p1) { if(strcmp(p1->num,num)==0) { printf("输入正确,请继续\n "); flag++; break; } p1=p1->next; } if(flag==0) { printf ("该学号不存在!\n"); getchar(); printf ("按任意键返回主菜单\n"); getchar(); return ; }else{ printf("你的余额为: %.2f\n",p1->money); printf("---请输入你要充值的金额---\n"); scanf("%lf",&money); } p1->money=p1->money+money; printf("此学号已充值成功,余额为:%.2f",p1->money); p2=head->next; if((fp=fopen("duli16.3.dat","w+")) == NULL) { printf("File open error!\n"); printf("---输入任意键继续---\n"); getchar(); exit(0); } while(p2) { fprintf(fp,"%s %s %.2f\n",p2->num,p2->name,p2->money); p2=p2->next; } fclose(fp); getchar(); printf ("---请按任意键继续---\n"); getchar(); }
时间: 2024-01-23 15:03:43 浏览: 22
这是一个 C 语言函数,它的作用是实现对一个链表中指定学生的充值功能。具体实现过程如下:
1. 定义了一个 `struct student` 结构体,包含了学生的学号、姓名、余额等信息。
2. 函数中定义了一个指向结构体的指针 `head`,表示链表的头节点。
3. 函数中定义了一个文件指针 `fp`,用于打开一个文件,将链表中的信息写入到文件中。
4. 函数中定义了一个 `flag` 变量,表示在链表中是否找到了指定学号的学生。如果找到了,`flag` 的值为 1,否则为 0。
5. 函数中定义了一个 `money` 变量,表示要充值的金额。
6. 函数中通过 `scanf` 函数获取要充值的学生的学号,然后遍历整个链表,查找是否存在该学号的学生。
7. 如果找到了指定学号的学生,就输出该学生的余额,并通过 `scanf` 函数获取要充值的金额。
8. 将充值的金额加到该学生的余额上,并输出充值成功后的余额。
9. 最后将链表中的所有学生信息写入到文件中,并关闭文件。
10. 如果没有找到指定学号的学生,就输出提示信息,并返回主菜单。
11. 函数执行完后,等待用户按任意键继续。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)