[英]Comparing two instances of a struct
我有自己的數據類型,因為 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
}
使用打印語句,我可以看到 isSameRoom function 不起作用。 它可以很好地生成隨機房間,但是當我運行程序時,我會為 A 和 B 獲得相同的房間。知道為什么嗎? 謝謝: :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.