У меня есть структура и массив таких структур:Как получить доступ к этому массиву 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);
Он ничего не выводит.
Возможно 'stdout' не вровень. Попробуйте 'printf ("% d \ n ", client [8] .inUse);' –
Где и как вы объявили свою структурную переменную? – Nutan
Добро пожаловать в переполнение стека. Вскоре прочитайте страницу [О программе]. Что еще более важно, прочитайте, как создать MCVE ([Как создать минимальный, полный и проверенный пример?] (Http://stackoverflow.com/help/mcve)). Непонятно, из чего вы показываете, является ли ваш массив глобальной (переменная области файла, возможно, с внешней связью) или локальной функцией. Поскольку вы явно не передаете его функции 'addToList()', предположительно это глобально. Вам не следует ожидать выхода, пока вы не напечатаете новую строку в конце строки - вывод часто не будет отображаться до тех пор. –