strcat和malloc
目前,我需要将strcat()2个字符串放在一起。 问题是,我必须这样做3次。 (共6个连接)。 程序是这样,使用循环重复3次:
- Malloc一个字符串
- 使用for循环,调用strcat 2次
- 释放字符串
问题是即使在我释放字符串和重新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,只是说嘿我要写在这里..这就是你已经说过的。 尝试释放/重新初始化变量