void file_save(void) { printf("saving"); for (int i = 0; i < 6; i++) { Sleep(200); printf("."); } Sleep(200); file_first = fopen("File_First.txt", "w"); fprintf(file_first, "%5d", file_number); fclose(file_first); current = head; for (int i = 1; i <= file_number; i++) { sprintf(file_name, "File_%d.txt", i); file_current = fopen(file_name, "w"); if (file_current == NULL) { printf("No file existed\n"); system("pause"); system("cls"); } else { current = current->next; rewind(file_current); fprintf(file_current, "%5d%5d%5d%5d%5d%5d%5d%5d\n", current->name_num, current->title_num, current->iden_num, current->pro_num, current->abi_num,current->race_num, current->item_num, current->soc_num); name_current = current->_name; title_current = current->_title; iden_current = current->_iden; pro_current = current->_pro; abi_current = current->_abi; race_current = current->_race; item_current = current->_item; soc_current = current->_soc; for (int i = 0; i < current->name_num; i++) { name_current = name_current->next; fprintf(file_current,"%s\n", name_current->name); } for (int i = 0; i < current->title_num; i++) { title_current = title_current->next; fprintf(file_current,"%s\n", title_current->title); } for (int i = 0; i < current->iden_num; i++) { iden_current = iden_current->next; fprintf(file_current,"%s\n", iden_current->identity); } for (int i = 0; i < current->pro_num; i++) { pro_current = pro_current->next; fprintf(file_current, "%s\n%d\n", pro_current->profession, pro_current->level); } for (int i = 0; i < current->abi_num; i++) { abi_current = abi_current->next; fprintf(file_current, "%s\n%s\n", abi_current->ability, abi_current->explain); } for (int i = 0; i < current->race_num; i++) { race_current = race_current->next; fprintf(file_current, "%s\n", race_current->race); } for (int i = 0; i < current->item_num; i++) { item_current = item_current->next; fprintf(file_current, "%s\n%s\n%d\n", item_current->item, item_current->explain, item_current->number); } for (int i = 0; i < current->soc_num; i++) { soc_current = soc_current->next; fprintf(file_current, "%s\n%s\n%s\n", soc_current->object, soc_current->relationship, soc_current->explain); } fclose(file_current); } } system("files have been saved\n"); system("pause"); system("cls"); } 为什么最后保存的时候保存顺序有很大差别,假设已经有5个文件,为什么不是从File_1保存到File_5

时间: 2024-04-17 12:23:10 浏览: 15
根据你提供的代码,最后保存的顺序是根据链表中节点的顺序来进行保存的。在保存文件之前,你使用了一个循环 `current = current->next` 来遍历链表,这将导致在每次保存文件时,当前节点都会递增到下一个节点。因此,最终保存的文件顺序是根据链表中节点的顺序来决定的。 如果你想按照特定的顺序保存文件,你可以修改代码以满足你的需求。例如,你可以在循环之前定义一个数组来存储要保存的文件顺序,然后根据这个顺序遍历链表并保存文件。 另外,请注意,在循环中使用了相同的变量名 `i`,这可能会导致代码逻辑错误。建议在每个循环中使用不同的变量名来避免混淆。
相关问题

c知道打印双色球号码再使用冒泡程序排序后输出 使用void+printNumbers(int+numbers[],+int+count)+{ ++++for+(int+i+=+0;+i+<+count

```c #include <stdio.h> void bubbleSort(int numbers[], int count) { for (int i = 0; i < count - 1; i++) { for (int j = 0; j < count - i - 1; j++) { if (numbers[j] > numbers[j + 1]) { int temp = numbers[j]; numbers[j] = numbers[j + 1]; numbers[j + 1] = temp; } } } } void printNumbers(int numbers[], int count) { for (int i = 0; i < count; i++) { printf("%d ", numbers[i]); } printf("\n"); } int main() { int numbers[] = {1, 5, 3, 2, 4}; int count = sizeof(numbers) / sizeof(numbers[0]); printf("Before sorting: "); printNumbers(numbers, count); bubbleSort(numbers, count); printf("After sorting: "); printNumbers(numbers, count); return 0; } ``` 运行结果: Before sorting: 1 5 3 2 4 After sorting: 1 2 3 4 5

void buffer_print(char* buff int len) { int i = 0; for(i = 0;i < len; i++) { printf("DATA:",(unsigned char)bufff[i]); } }

这段代码中定义了一个函数 `buffer_print()`,用于打印一个缓冲区的内容。但是函数的实现逻辑存在问题,具体说明见代码注释: ```c void buffer_print(char* buff, int len) { int i = 0; for (i = 0; i < len; i++) { // 错误的输出格式,应该使用 %02X 来以十六进制的格式输出每一个字节的值 printf("DATA:", (unsigned char) buff[i]); } } ``` 在调用函数时,需要传入缓冲区的起始地址和长度,示例代码如下: ```c #include <stdio.h> void buffer_print(char* buff, int len); int main() { char buff[] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10}; buffer_print(buff, sizeof(buff)); return 0; } ``` 如果你想要打印出缓冲区中每个字节的十六进制值,可以将 `printf()` 函数的输出格式修改为 `%02X`,如下所示: ```c void buffer_print(char* buff, int len) { int i = 0; for (i = 0; i < len; i++) { // 使用 %02X 来以十六进制的格式输出每一个字节的值 printf("%02X ", (unsigned char) buff[i]); } } ``` 修改后的输出结果为: ``` 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 ```

相关推荐

#include <stdio.h> #include <time.h> #define SIZE 1000 #define CNT 10 typedef double array[SIZE][SIZE]; void init(array A, array B, array C, int n) { for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { A[i][j] = B[i][j] = 1.0; C[i][j] = 0.0; } } } void de_init(array C, int n) { for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { C[i][j] = 0.0; } } } //定义 i 行,j 列,k 索引 void ijk(array A, array B, array C, int n) { int i, j, k; double sum; for(i = 0; i < n; i++) { for(j = 0; j < n; j++) { sum = 0.0; for(k = 0; k < n; k++) { sum += A[i][k] * B[k][j]; } C[i][j] += sum; } } } //交换 i 和 j void jik(array A, array B, array C, int n) { int i, j, k; double sum; for(j = 0; j < n; j++) { for(i = 0; i < n; i++) { sum = 0.0; for(k = 0; k < n; k++) { sum += A[i][k] * B[k][j]; } C[i][j] += sum; } } } void ikj(array A, array B, array C, int n) { int i, j, k; double r; for(i = 0; i < n; i++) { for(k = 0; k < n; k++) { r = A[i][k]; for(j = 0; j < n; j++) { C[i][j] += r * B[k][j]; } } } } //交换 k 和 i void kij(array A, array B, array C, int n) { int i, j, k; double r; for(k = 0; k < n; k++) { for(i = 0; i < n; i++) { r = A[i][k]; for(j = 0; j < n; j++) { C[i][j] += r * B[k][j]; } } } } int main() { double t_ijk, t_ikj; clock_t clk_start, clk_end; array A, B, C; init(A, B, C, SIZE); clk_start = clock(); for(int i = 0; i < CNT; i++) { ijk(A, B, C, SIZE); de_init(C, SIZE); } clk_end = clock(); t_ijk = (double)(clk_end - clk_start) / CLOCKS_PER_SEC / 10.0; clk_start = clock(); for(int i = 0; i < CNT; i++) { ikj(A, B, C, SIZE); de_init(C, SIZE); } clk_end = clock(); t_ikj = (double)(clk_end - clk_start) / CLOCKS_PER_SEC / 10.0; printf("ijk:%f\t, ikj:%f\n", t_ijk, t_ikj); }修改此段代码让结果为ijk=3.536100,jik:2.44900

#include <stdio.h> #include <conio.h> #include <windows.h> // 求素数 int* get_prime() { static int primes[30]; int prime[101]; for (int i = 0; i <= 100; i++) { prime[i] = 1; } prime[0] = prime[1] = 0; for (int i = 2; i < 10; i++) { if (prime[i]) { for (int j = i * i; j <= 100; j += i) { prime[j] = 0; } } } int count = 0; for (int i = 2; i <= 100; i++) { if (prime[i]) { primes[count++] = i; } } primes[count] = -1; // 用-1表示素数数组的结尾 return primes; } // 输出素数 void print_primes(int* primes) { system("cls"); // 清空屏幕 int count = 0; for (int i = 0; primes[i] != -1; i++) { count++; printf("%d ", primes[i]); if (count % 10 == 0) { printf("\n"); } Sleep(1000); // 停顿一秒 system("cls"); // 清空屏幕 } } // 统计素数个数和求和 void count_sum(int* primes, int* count, int* s) { *count = 0; *s = 0; for (int i = 0; primes[i] != -1; i++) { *count += 1; *s += primes[i]; } } // 让素数之和闪烁三次 void blink_sum(int s) { printf("\n素数之和为:%d", s); for (int i = 0; i < 3; i++) { Sleep(500); system("cls"); Sleep(500); printf("\n素数之和为:%d", s); } } // 主程序 int main() { printf("100以内求素数\n"); printf("请按任意键开始"); getch(); int* primes = get_prime(); printf("\n100以内的素数为:\n"); print_primes(primes); int count, s; count_sum(primes, &count, &s); printf("\n100以内的素数个数为:%d", count); blink_sum(s); printf("\n程序结束"); return 0; }从类型和结构分析这段程序的详细设计及编码

#include <stdio.h> #define ROW 3 #define COL 4 void stduents_name(char name[30]) { printf("请输入学生姓名:\n"); for(int i=0;i<3;i++) { scanf("%s",name[i]); } } void input_scores(int nums[][COL], int row ,char name[30]) { printf("请输入学生成绩:\n"); for (int i = 0; i < row; i++) { printf("第%d名学生成绩是: ", name[i]); for (int j = 0; j < COL; j++) { scanf("%d", &nums[i][j]); } } } void print_scores(int nums[][COL], int row) { printf("\n输入的学生成绩为:\n"); for (int i = 0; i < row; i++) { for (int j = 0; j < COL; j++) { printf("%5d", nums[i][j]); } printf("\n"); } } void calculate_sum(int nums[][COL], int sum[], int row) { for (int i = 0; i < row; i++) { sum[i] = 0; for (int j = 0; j < COL; j++) { sum[i] += nums[i][j]; } } } void bubble_sort(int nums[][COL], int sum[], int row) { int temp, temp_sum; for (int k = 0; k < row - 1; k++) { for (int i = 0; i < row - k - 1; i++) { if (sum[i] > sum[i + 1]) { temp_sum = sum[i]; sum[i] = sum[i + 1]; sum[i + 1] = temp_sum; for (int j = 0; j < COL; j++) { temp = nums[i][j]; nums[i][j] = nums[i + 1][j]; nums[i + 1][j] = temp; } } } } } int main() { int nums[ROW][COL]; int sum[ROW]; char name[30]; stduents_name(name); input_scores(nums, ROW, name); print_scores(nums, ROW); calculate_sum(nums, sum, ROW); bubble_sort(nums, sum, ROW); printf("\n排序后学生成绩为(由低到高):\n"); for (int i = 0; i < ROW; i++) { for (int j = 0; j < COL; j++) { printf("%5d", nums[i][j]); } printf("\n"); } return 0; }

最新推荐

recommend-type

埃森哲制药企业数字化转型项目顶层规划方案glq.pptx

埃森哲制药企业数字化转型项目顶层规划方案glq.pptx
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

用 Python 画一个可以动的爱心

好的,我可以帮助您使用Python来绘制一个动态的爱心。您可以使用turtle库来实现。以下是实现代码: ```python import turtle import math # 设置画布和画笔 canvas = turtle.Screen() canvas.bgcolor("black") pencil = turtle.Turtle() pencil.speed(0) pencil.color("red", "pink") pencil.pensize(3) # 定义爱心函数 def draw_love(heart_size, x_offset=0, y_offset=0):
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依
recommend-type

实现实时监控告警系统:Kafka与Grafana整合

![实现实时监控告警系统:Kafka与Grafana整合](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9BVldpY3ladXVDbEZpY1pLWmw2bUVaWXFUcEdLT1VDdkxRSmQxZXB5R1lxaWNlUjA2c0hFek5Qc3FyRktudFF1VDMxQVl3QTRXV2lhSWFRMEFRc0I1cW1ZOGcvNjQw?x-oss-process=image/format,png) # 1.1 Kafka集群架构 Kafka集群由多个称为代理的服务器组成,这
recommend-type

已知n个人(以编号0,1,2,3...n-1分别表示)围坐在一张圆桌周围。从编号为0的人开始报数1,数到m的那个人出列;他的下一个人又从1开始报数,数到m+1的那个人又出列(每次报数值加1);依此规律重复下去,直到圆桌周围的人全部出列。用递归方法解决

这个问题可以使用递归方法解决。下面是一个思路: 1. 定义一个函数,接收三个参数:n、m、i,表示还剩下n个人,每次数到m时出列,当前报数的人是i; 2. 如果n=1,返回i,即最后留下的那个人的编号; 3. 否则,计算出下一个出列的人的编号j,通过递归调用函数解决n-1个人的问题,其结果为k; 4. 如果k < j,即当前i之后出列的人的编号为k,需要将k转换为在i之前出列的编号,返回值为 k+(n-1); 5. 如果k>=j,即当前i之后出列的人的编号为k,返回值为 k-(j-1); 下面是对应的Python代码: ```python def josephus(n, m, i):
recommend-type

c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf

校园超市商品信息管理系统课程设计旨在帮助学生深入理解程序设计的基础知识,同时锻炼他们的实际操作能力。通过设计和实现一个校园超市商品信息管理系统,学生掌握了如何利用计算机科学与技术知识解决实际问题的能力。在课程设计过程中,学生需要对超市商品和销售员的关系进行有效管理,使系统功能更全面、实用,从而提高用户体验和便利性。 学生在课程设计过程中展现了积极的学习态度和纪律,没有缺勤情况,演示过程流畅且作品具有很强的使用价值。设计报告完整详细,展现了对问题的深入思考和解决能力。在答辩环节中,学生能够自信地回答问题,展示出扎实的专业知识和逻辑思维能力。教师对学生的表现予以肯定,认为学生在课程设计中表现出色,值得称赞。 整个课程设计过程包括平时成绩、报告成绩和演示与答辩成绩三个部分,其中平时表现占比20%,报告成绩占比40%,演示与答辩成绩占比40%。通过这三个部分的综合评定,最终为学生总成绩提供参考。总评分以百分制计算,全面评估学生在课程设计中的各项表现,最终为学生提供综合评价和反馈意见。 通过校园超市商品信息管理系统课程设计,学生不仅提升了对程序设计基础知识的理解与应用能力,同时也增强了团队协作和沟通能力。这一过程旨在培养学生综合运用技术解决问题的能力,为其未来的专业发展打下坚实基础。学生在进行校园超市商品信息管理系统课程设计过程中,不仅获得了理论知识的提升,同时也锻炼了实践能力和创新思维,为其未来的职业发展奠定了坚实基础。 校园超市商品信息管理系统课程设计的目的在于促进学生对程序设计基础知识的深入理解与掌握,同时培养学生解决实际问题的能力。通过对系统功能和用户需求的全面考量,学生设计了一个实用、高效的校园超市商品信息管理系统,为用户提供了更便捷、更高效的管理和使用体验。 综上所述,校园超市商品信息管理系统课程设计是一项旨在提升学生综合能力和实践技能的重要教学活动。通过此次设计,学生不仅深化了对程序设计基础知识的理解,还培养了解决实际问题的能力和团队合作精神。这一过程将为学生未来的专业发展提供坚实基础,使其在实际工作中能够胜任更多挑战。