void f15() {int i, n1; FILE* fp; if ((fp=fopen("D:\\a1", "r")) == NULL) { printf("error-f15\n"); exit(1); } i = 0; printf("请输入删除第几项"); scanf("%i", &n1); if ((fp=fopen("D:\\a1", "w")) == NULL) { printf("error\n"); exit(1); } printf("修改后的信息为"); for (i = 0; i < n1 - 1; i++) { printf("1"); printf("出厂序号:"); puts(byq[i].serial); printf("产品型号:"); puts(byq[i].model); printf("额定容量:"); printf("%i\n",byq[i].capacity); printf("额定电压:"); printf("%i\n",byq[i].voltage); printf("额定功率:"); printf("%i\n",byq[i].power); printf("相数:"); printf("%i\n",byq[i].phase); printf("冷却方式:"); puts(byq[i].cooling); printf("使用条件:"); puts(byq[i].condition); } for (i = n1 - 1; i < n - 1; i++) byq[i] = byq[i + 1]; for (i = n1 - 1; i < n - 1; i++) { printf("出厂序号:"); puts(byq[i].serial); printf("产品型号:"); puts(byq[i].model); printf("额定容量:"); printf("%i\n",byq[i].capacity); printf("额定电压:"); printf("%i\n",byq[i].voltage); printf("额定功率:"); printf("%i\n",byq[i].power); printf("相数:"); printf("%i\n",byq[i].phase); printf("冷却方式:"); puts(byq[i].cooling); printf("使用条件:"); puts(byq[i].condition); } fclose(fp); }
时间: 2024-02-04 07:02:44 浏览: 132
FILE_fopen_rename_file_
这段代码实现的是从一个文件中删除一条变压器记录,并将修改后的内容重新写入文件。具体实现过程如下:
1. 首先定义了一些变量,包括i和n1等,其中n1表示要删除的变压器记录在数组中的位置。
2. 然后打开"a1"文件,并检查文件是否成功打开。如果打开失败,则输出错误信息并退出程序。
3. 接下来通过scanf函数读取用户输入的要删除的记录的位置n1。
4. 然后重新打开"a1"文件,并将文件指针移到文件开头。这里需要注意,如果不将文件指针移到文件开头,那么写入文件时会将原有的内容覆盖掉。
5. 然后使用一个循环遍历整个变压器数组,并输出每个记录的信息。当循环到第n1个记录时,跳过该记录不输出。
6. 接下来将从n1到n-1的所有记录依次向前移动一位,然后将n减1。这样就完成了记录的删除。
7. 然后再次使用一个循环遍历整个变压器数组,并输出每个记录的信息。这里需要注意,由于已经删除了一条记录,因此最后一个记录不需要输出。
8. 最后关闭文件。
需要注意的是,该代码中也存在一些问题。比如,如果输入的n1超出了数组的范围,程序会崩溃。此外,该代码中的文件路径是写死的,如果要移植到其他环境中,可能需要修改文件路径。
阅读全文