現在、2つの文字列を一緒にstrcat()する必要があります。キャッチは私がこれを3回しなければならないということです。(合計6つの連結)。手順はこれで、ループを使用して3回繰り返されます。
- ストリングをMallocする
- forループを使用して、strcatを2回呼び出します
- 文字列を解放します
問題は、文字列を解放して再マロックした後でも、strcatが前の文字列を連結し続けているように見えることです。
例えば:
AA BB CC DDEEFFからの期待される出力
- 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;
}
}