我在C做一个学校项目,我被困在这个难题。 所以,我们需要为100个用户实现一个使用套接字的消息传递系统。
我将我的用户数据存储在此结构中。功能被卡在一个循环
typedef struct user
{
char username[20];
int online; //flag value 1 = online, 0 = offline
msg *message_list;
int message_count;
}
而我们需要实现的一项服务是提取所有当前连接的用户的列表。我已经为这个任务写了这个函数。
void all_connected(char buf[2300])
{
printf("\n entering all_connected for %d iterations",user_count);
int i, count = 1;
char tmp[25];
for (i=0; i<user_count; i++)
{
if(users[i] -> online == 1)
{
sprintf(tmp, "\n\t%d. %s", count++, users[i] -> username);
strcat(buf, tmp);
}
}
printf("\n exiting all_connected");
}
现在一些奇怪的原因,当我把这个功能在请求服务时,它打印的第一个printf(进入all_connected对于x迭代);但它不打印我放在最后一行的那个。 这是否意味着该功能卡在某一行?我检查过它正在迭代'user_count'时间,但从不在最后一行。
这可能是什么原因造成的?
添加一些'printf()'在循环内部调用和'if'语句。 –
我确实在if语句中有打印。它正在完成所有迭代。 – zomboy
你应该在这里显示你的代码。 –