void modifyCar() { CAR car; int findID[10]; printf("\n车辆信息修改\n"); printf("请输入要修改车辆信息的车牌号:"); scanf("%d", &findID); int i; for (i = 0; i < carCount; i++) { if (number[i].number == findID) { printf("车主姓名:%s\n车牌号:%s\n车辆颜色:%s\n车辆型号:%s\n", number[i].name, number[i].number, number[i].color, number[i].kind); printf("\n请输入修改信息\n"); printf("车主姓名:"); scanf("%s",number[i].name); fseek(pFile, -sizeof(CAR), 1); fwrite(&car, sizeof(CAR), 1, pFile); printf("车牌号:"); scanf("%s",number[i].number); fseek(pFile, -sizeof(CAR), 1); fwrite(&car, sizeof(CAR), 1, pFile); printf("车辆颜色:"); scanf("%s",number[i].color); fseek(pFile, -sizeof(CAR), 1); fwrite(&car, sizeof(CAR), 1, pFile); printf("车辆型号:"); scanf("%s",number[i].kind); fseek(pFile, -sizeof(CAR), 1); fwrite(&car, sizeof(CAR), 1, pFile); printf("信息已修改\n"); break; } } if (i == carCount) { printf("没有该车辆信息\n"); } system("pause"); }修正代码
时间: 2024-03-31 20:35:55 浏览: 39
void modifyCar() {
int findID;
printf("\n车辆信息修改\n");
printf("请输入要修改车辆信息的车牌号:");
scanf("%d", &findID);
int i;
for (i = 0; i < carCount; i++) {
if (number[i].number == findID) {
printf("车主姓名:%s\n车牌号:%s\n车辆颜色:%s\n车辆型号:%s\n", number[i].name, number[i].number, number[i].color, number[i].kind);
printf("\n请输入修改信息\n");
printf("车主姓名:");
scanf("%s", number[i].name);
printf("车牌号:");
scanf("%s", number[i].number);
printf("车辆颜色:");
scanf("%s", number[i].color);
printf("车辆型号:");
scanf("%s", number[i].kind);
fseek(pFile, i * sizeof(CAR), SEEK_SET);
fwrite(&number[i], sizeof(CAR), 1, pFile);
printf("信息已修改\n");
break;
}
}
if (i == carCount) {
printf("没有该车辆信息\n");
}
system("pause");
}
修正代码主要解决了两个问题:
1. 在修改车辆信息时,使用了一个未初始化的变量 car 声明为了一个结构体变量,并且在 fwrite 函数中使用了这个变量,这是不正确的。因此,在修正代码中删除了这个变量的声明和使用。
2. 在修改车辆信息时,使用了 fseek 函数将文件指针移动到倒数第二个结构体的位置,这是不正确的。正确的做法是将文件指针移动到要修改的结构体的位置,即 i * sizeof(CAR) 的位置,然后使用 fwrite 函数将修改后的结构体数据写入文件。因此,在修正代码中修改了 fseek 函数的参数,并在 fwrite 函数中写入了要修改的结构体数据。
阅读全文