我在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
你應該在這裏顯示你的代碼。 –