У меня есть свой собственный тип данных, поскольку C89 не допускает тип bool. Я не могу использовать C99, к сожалению.
Я протестировал приведенный ниже код, и моя программа даже не распознает, что имена разные. Имена работают просто отлично. Я загрузил их в экземпляр структуры.
struct ROOM roomList [MAX_ROOMS_COUNT];
Я использовал memset и strcpy, чтобы скопировать список комнат из массива комнат. Тестирование дает мне результаты, которые я хочу получить так ...
printf("%s", roomList[1].name)
printf("%s", roomList[2].name)
...
printf("%s", roomList[7].name)
Массив Rooms имеет 7 значений.
#define MAX_ROOMS_COUNT 7
typedef enum {
true = 1,
false = 0
} boolean;
struct ROOM {
char name[8];
char* type;
int numConnections;
char* connections [MAX_CONNECTIONS_COUNT];
};
boolean isSameRoom(struct ROOM x, struct ROOM y) {
//printf("Is Same Room, 1:%s, 2:%s\n", x.name, y.name);
if (x.name == y.name) {
//printf("ROOM IS SAME!");
return true;
}
else {
return false;
}
}
struct ROOM getRandomRoom() {
int random = rand() % MAX_ROOMS_COUNT;
return roomList[random];
}
void addRandomConnection() {
struct ROOM A;
struct ROOM B;
A = getRandomRoom();
do {
B = getRandomRoom();
}while(isSameRoom(A, B) == true);
//printf("Add Random Connection, 1:%s, 2:%s\n", A.name, B.name); //for testing purposes
}
Используя операторы print, я вижу, что функция isSameRoom не работает. Он генерирует случайные комнаты просто отлично, но бывают случаи, когда я запускаю программу, когда получаю одну и ту же комнату для A и B. Есть идеи, почему? Спасибо! :)