Ich habe Probleme beim Vergleich Strings in C (mit denen ich ziemlich neu bin). Ich habe Socket auf dieser Server-Anwendung, die darauf wartet, Daten von einem Client zu akzeptieren. In diesem speziellen Teil meines Programms möchte ich in der Lage sein, eine MySQL-Abfrage basierend auf den vom Client empfangenen Daten auszuführen. Ich möchte wissen können, wann die empfangenen Daten den Wert "newuser" haben, um eine einfache Registrierungsprozedur zu initiieren. Strcmp gibt einen positiven 1-Wert zurück, wo ich glaube, dass ich eine 0 bekommen sollte, weil die Werte gleich sein sollten.Vergleiche Strings in C - strcmp
Source Code:
//setup socket
//loop and select structure to handle multiple connections
if ((nbytes = recv(i, buf, sizeof buf, 0)) <= 0) {
// got error or connection closed by client
if (nbytes == 0) {
// connection closed
printf("selectserver: socket %d hung up\n", i);
} else {
perror("recv");
}
close(i); // bye!
FD_CLR(i, &master); // remove from master set
} else {
char check[] = "newuser";
char fromUser[sizeof check];
strncpy(fromUser,buf, sizeof check);
printf("length of fromUser: %d\n", sizeof fromUser);
printf("length of check: %d\n", sizeof check);
printf("message from user: %s\n", fromUser);
printf("check = %s \n", check);
int diff = strcmp(fromUser, check);
printf("compare fromUser to check: %d\n", diff);
if (strcmp(fromUser, check) == 0) {
printf("aha! new user");
}
Ausgang:
length of fromUser: 8
length of check: 8
newuser from user: newuser
check = newuser
compare fromUser to check:
Ich habe das Gefühl, ich bin nicht der eingehenden Puffer richtig oder falsch den Puffer kopiert Handhabung.
Sie protokollieren nicht den Wert fromUser, nur seine Länge. – Tom