void deleteCar() { CAR car; int findID; printf("\n车辆信息输入\n"); printf("请输入要删除的车牌号:"); scanf("%d", &findID); int i, j; for (i = 0; i < carCount; i++) { if (number[i].number == findID) { for (j = i; j < carCount - 1; j++) { number[j] = number[j + 1]; } carCount--; fseek(pFile, -sizeof(CAR), 1); fwrite(&car,sieof(CAR),1,pFile); printf("车辆信息已删除\n"); break; } } if (i == carCount) { printf("没有该车辆信息\n"); } system("pause"); }修正代码
时间: 2024-03-31 21:35:58 浏览: 16
void deleteCar() {
int findID;
printf("\n车辆信息输入\n");
printf("请输入要删除的车牌号:");
scanf("%d", &findID);
int i, j;
for (i = 0; i < carCount; i++) {
if (number[i].number == findID) {
for (j = i; j < carCount - 1; j++) {
number[j] = number[j + 1];
}
carCount--;
fseek(pFile, 0, SEEK_SET);
fwrite(number, sizeof(CAR), carCount, pFile);
printf("车辆信息已删除\n");
break;
}
}
if (i == carCount) {
printf("没有该车辆信息\n");
}
system("pause");
}
修正代码主要解决了两个问题:
1. 在删除车辆信息时,将一个未初始化的变量 car 声明为了一个结构体变量,并且在 fwrite 函数中使用了这个变量,这是不正确的。因此,在修正代码中删除了这个变量的声明和使用。
2. 在删除车辆信息时,使用了 fseek 函数将文件指针移动到倒数第二个结构体的位置,这是不正确的。正确的做法是将文件指针移动到文件开头,然后使用 fwrite 函数将剩余的结构体数据写入文件。因此,在修正代码中修改了 fseek 函数的参数,并增加了 fwrite 函数的调用,以正确地将剩余的车辆信息写入文件。