strcat和malloc

目前,我需要将strcat()2个字符串放在一起。 问题是,我必须这样做3次。 (共6个连接)。 程序是这样,使用循环重复3次:

  1. Malloc一个字符串
  2. 使用for循环,调用strcat 2次
  3. 释放字符串

问题是即使在我释放字符串和重新malloc之后,strcat似乎仍然在连接前一个字符串。

例如:

AA BB CC DD EE FF的预期输出

  • strcat字符串1:AABB
  • strcat string 2:CCDD
  • strcat字符串3:EEFF

实际产量:

  • strcat字符串1:AABB
  • strcat字符串2:AABBCCDD
  • strcat string 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; jplayerFD) { strcat(stringToSend, deck[j].identifier); } } for (int j=0; jplayerFD, stringToSend); //send(curNode->playerFD, stringToSend, 6, 0); free(stringToSend); curNode = curNode->next; } } 

ptr=malloc(…) ,在strcat()之前,用*ptr = '\0';初始化空格*ptr = '\0';malloc()返回的malloc()通常不归零。

使用printf语句检查循环结构,很可能当你认为自己没有释放自己认为的时候。 将根据代码编辑答案..

你只是重新malloc,只是说嘿我要写在这里..这就是你已经说过的。 尝试释放/重新初始化变量