2015-12-31 4 views
0

У меня есть структура и массив таких структур:Как получить доступ к этому массиву struct в функции C?

typedef struct clientInformation{ 
    int inUse; 
    int socketNumberClient; 
    char *portNumber; 
    int listeningPort; 
    char *clientsName; 
    char *clientsIP; 
}clientInformation; 
clientInformation client[10]; 

Я инициализировать массив, вызвав эту функцию:

void addToList(char *ipaddress,char *p,char *cName,int socketNumber,int clientPortListen){ 
int i; 
    for(i=0;i<10;i++){ 
     if(client[i].inUse==0){ 
      client[i].inUse=1; 
      client[i].socketNumberClient=socketNumber; 
      client[i].listeningPort=clientPortListen; 
      client[i].portNumber=p; 
      client[i].clientsName=cName; 
      client[i].clientsIP=ipaddress; 
      break; 
     } 
    } 
} 

Я вызов функции функции инициализации от основной функции(), используя этот метод:

addToList(clientIP,clientPort,clientName,clientSocketNew,clientPortListen); 

Проблема в том, что я не могу получить доступ к элементам структуры в массиве после инициализации. Я не уверен, заполнены ли члены или нет.

Для экземпляра при попытке печати в главной() это:

Е ("% d", клиент [8] .inUse);

Он ничего не выводит.

+5

Возможно 'stdout' не вровень. Попробуйте 'printf ("% d \ n ", client [8] .inUse);' –

+1

Где и как вы объявили свою структурную переменную? – Nutan

+2

Добро пожаловать в переполнение стека. Вскоре прочитайте страницу [О программе]. Что еще более важно, прочитайте, как создать MCVE ([Как создать минимальный, полный и проверенный пример?] (Http://stackoverflow.com/help/mcve)). Непонятно, из чего вы показываете, является ли ваш массив глобальной (переменная области файла, возможно, с внешней связью) или локальной функцией. Поскольку вы явно не передаете его функции 'addToList()', предположительно это глобально. Вам не следует ожидать выхода, пока вы не напечатаете новую строку в конце строки - вывод часто не будет отображаться до тех пор. –

ответ

1

В комментариях по вопросу объясняется, почему возникла проблема и как ее решить. Суммируйте это здесь.

Для того, чтобы получить stdout, когда вы делаете свои выходы, вам нужно получить \n в конце вывода.

Изменить

printf("%d",client[8].inUse); 

Для

printf("%d\n",client[8].inUse);