Client *client = new Client();
char *authBuffer = new char[MAX_BUFFER_SIZE]; // buffer contains 234567|john|pwd4john
bufferToClient(authBuffer, client);
printf("id=%i username=%s password=%s\n", client->id, client->username, client->password);
// output is: id=234567 username= password=
// function
void bufferToClient(char *buffer, Client *client) {
memset(client, 0x00, CLIENT_STRUCT_SIZE);
char *token = strtok(buffer, PIPE); // pipe |
client->id = atoi(token);
client->username = strtok(0, PIPE);
client->password = strtok(0, PIPE);
printf("%i\n", client->id);
printf("%s\n", client->username);
printf("%s\n", client->password);
// everything is ok and prints out the values as expected
// 234567
// john
// pwd4john
delete token;
}
// struct
struct Client {
unsigned int id;
const char *username;
const char *password;
virtual ~Client() {
delete username;
delete password;
}
};
Я уверен, что это должно быть что-то простое, но я просто не могу понять, почему оно продолжает отбрасывать значения имени пользователя и пароля. В какой-то момент имя пользователя вернулось нормально, но пароль был перепутан.
// everything is ok and prints out the values as expected
// 234567 // john // pwd4john
delete token; }
// struct
struct Client {
unsigned int id; const char *username; const char *password;
virtual ~Client() {
delete username; delete password; } }; [/code] Я уверен, что это должно быть что-то простое, но я просто не могу понять, почему оно продолжает отбрасывать значения имени пользователя и пароля. В какой-то момент имя пользователя вернулось нормально, но пароль был перепутан.