Ich mache ein Schulprojekt in C und ich bin bei diesem Puzzle fest. Also müssen wir ein Nachrichtenübergabesystem mit Sockets für 100 Benutzer implementieren.
Ich speichere die Daten meiner Benutzer in dieser Struktur.Funktion in einer Schleife stecken
typedef struct user
{
char username[20];
int online; //flag value 1 = online, 0 = offline
msg *message_list;
int message_count;
}
Und ein Service, den wir implementieren müssen, ist eine Liste aller aktuell verbundenen Benutzer zu ziehen. Ich habe diese Funktion für diese Aufgabe geschrieben.
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");
}
Jetzt aus irgendeinem seltsamen Grund, wenn ich diese Funktion aufrufen, wenn der Dienst angefordert wird, druckt es das erste printf (all_connected für x Iterationen eintritt); aber es druckt nicht den, den ich auf die letzte Zeile gesetzt habe. Bedeutet das, dass die Funktion in einer Zeile stecken bleibt? Ich habe überprüft und es wiederholt 'user_count' mal, aber nie in der letzten Zeile.
Was könnte ein Grund dafür sein?
Fügen Sie einige 'printf()' ruft innerhalb der Schleife und der 'if' Anweisung auf. –
Ich hatte einen Ausdruck in der if-Anweisung. Es beendet alle Iterationen. – zomboy
Sie sollten das in Ihrem Code hier zeigen. –