проверка содержимого элемента-члена в массиве структуры C

Я делаю книжное упражнение (не домашнее задание, поскольку я самообучаюсь), в котором я должен написать телефонная книга, использующая массив типа struct. Итак, я определил:

typedef struct contact {

    char cFirstName[10];
    char cLastName[10];
    char iTelphone[12];

} address ; // end type

Затем я определил:

address myContacts[5] = { 
                        { 
                { '\0' }  // inner most braces, 
                          // tell gcc to put 0 in all
                      // members of each struct ?
                }  // first braces, tell gcc we have a 
                   // a struct as array member
                }; // outer most braces, tell gcc we have 
                   // an array

Теперь у меня есть функция, которая печатает содержимое массива. Однако я этого не делаю. Я не хочу напечатать весь массив, потому что меня интересуют только элементы массива, члены которых не пусты. Итак, я попробовал следующее:

void printContacts( address * myContacts ){
    printf("Inside printContacts");
    int i = 0;

    while ( i < 5 ) {
        if (myContacts[i].cFirstName == NULL )
            printf("%s", myContacts[i].cFirstName); //does not work

        if (myContacts[i].cFirstName == '\0' )
            printf("%s", myContacts[i].cFirstName); //does not work

        if (myContacts[i].cFirstName[0] != 0 )
        {
            printf("%s", myContacts[i].cFirstName ); //does work!   
        }
        i++;
    }
}

Итак, мои вопросы:

  1. Инициализирую ли я элементы элементов массива, чтобы они были действительно нулевыми (например, cFirstName [10])?
  2. Есть ли способ лучше?
  3. Как могу я проверить, что элемент элемента массива пуст?

Заранее благодарим за ответы!

0
задан Gant 3 December 2011 в 15:53
поделиться