В настоящее время мне нужно объединить две строки strcat (). Загвоздка в том, что я должен проделать это 3 раза. (Всего 6 конкатенаций). Процедура такая, повторяется 3 раза с использованием петель:
- Malloc строка
- Используя цикл for, вызовите strcat 2 раза
- Освободите строку
Проблема в том, что даже после того, как я освобождаю строку и повторно выполняю malloc, strcat, кажется, продолжает объединять предыдущую строку.
Например:
Ожидаемый результат от AA BB CC DD EE FF
- strcat строка 1: AABB
- strcat строка 2: CCDD
- strcat строка 3: EEFF
Фактический выход:
- strcat строка 1: AABB
- strcat строка 2: AABBCCDD
- strcat строка 3: AABBCCDDEEFF
Кто-нибудь знает, зачем он это делает?
void sendInitialHand(card * deck) {
char * stringToSend;
playerNode * curNode;
curNode = housePlayers.head;
for (int i=0; i<housePlayers.playerCount; i++) {
stringToSend = malloc(sizeof(char)*6);
for (int j=0; j<52; j++) {
if (deck[j].inPlay == curNode->playerFD) {
strcat(stringToSend, deck[j].identifier);
}
}
for (int j=0; j<52; j++) {
if (deck[j].inPlay == 10) {
strcat(stringToSend, deck[j].identifier);
}
}
printf("[NETWORK] Send %d the following: %s\n", curNode->playerFD, stringToSend);
//send(curNode->playerFD, stringToSend, 6, 0);
free(stringToSend);
curNode = curNode->next;
}
}