完整代码:https://pastebin.com/NpspcJB8
FILE *fptr;
char regPlates[350][10]; // array of registration number plates, e.g. AA234BB
switch (userInput) {
case 'a': // check available spaces
ReadFromFile();
CheckEmptySpaces();
break;
}
以上代码是我为评估所做的一部分。我在switch
语句中尝试为此案例做的是从文件和数组中检查停车场中的可用空间数。这是文件的一部分:
Space: A1 Customer Name: a Registration number: a
Space: A2 Customer Name: e Registration number: e
Space: A3 Customer Name: Registration number:
Space: A4 Customer Name: g Registration number: g
Space: A5 Customer Name: h Registration number: h
这是功能的内容:
int ReadFromFile() {
fptr=fopen("parking_spaces.txt", "r");
if (fptr==NULL) {
printf("Error! File does not exist");
return 1;
}
for (i = 0; i < 350; i++) {
fscanf(fptr, "\nSpace: %s Customer Name: %s Registration number: %s\n", &parkingSpaces[i], &otherInfo[i], ®Plates[i]);
}
fclose(fptr);
}
void CheckEmptySpaces() {
c = 350;
for (i = 0; i < 350; i++) {
if (strcmp(regPlates[i], "") != 0) {
c-=1;
}
}
printf("There are %d free parking spaces \n", c);
}
问题是,当文件看起来像我链接的时,代码只考虑前两个占用的空间和前两个数组索引,即使有四个停车位。如果我向停车场添加更多车辆,则停车位A4和A5的值将被覆盖。
我认为这可能是for
循环提前结束的结果,但我想知道其他原因。