как проверить наличие пустых указателей - PullRequest
0 голосов
/ 06 апреля 2011

скажи, что у меня есть структура,

struct room{
char name[21];
int num1;
int num2;
struct room *doors[4];

};

количество комнат указано,

struct room rm[Number_of_room];

и каждая комната:

scanf(name | num1 | num2)
strcpy(rm[i].name, name)
rm[i].num1 = num1
rm[i].num2 = num2

все это прекрасно работает.

До тех пор, пока я не захочу проверить, что дверь уже направлена ​​на что-то или нет,

UP=0, RIGHT=1, DOWN=2, LEFT=3

rm[i].doors[0] = &rm[j]   // this is how I point the door to an other room, works fine too.

но когда я проверяю на strlen или null, предположим, что я назначаю только одну дверь из комнаты1 в комнату2, комната1 каким-то образом имеет более одной непустой двери.

Есть ли способ проверить, пустые двери или нет?

Спасибо

1 Ответ

2 голосов
/ 06 апреля 2011

Когда вы инициализируете новый объект типа struct room, присвойте его doors членам значение NULL.Затем сравните с NULL и найдите, если они уже установлены

struct room object;
object.doors[0] = NULL;
object.doors[1] = NULL;
object.doors[2] = NULL;
object.doors[3] = NULL;

if (object.doors[2] != NULL) {
    /* already assigned something */
    /* maybe reset? */
    object.doors[2] = NULL;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...