目前,我需要将两个字符串放在一起。问题是我必须这样做三次。(共6次级联)。程序是这样的,使用循环重复3次:
循环,调用strcat 2次
问题是,即使在我释放字符串和重新malloc之后,strcat似乎仍然继续连接上一个字符串。
例如:
预期来自AA BB CC DD EE FF的输出
实际输出:
AABBCCDD
有人知道它为什么要这么做吗?
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;
}
}发布于 2012-04-03 19:58:31
在ptr=malloc(…)之后,在strcat()之前,使用*ptr = '\0';初始化空间。malloc()返回的内存通常不是零的。
发布于 2012-04-03 19:56:56
使用printf语句检查您的循环结构,很可能当您认为是的时候,您没有释放您认为是什么。将根据代码编辑答案。
你只会说嘿我要在这里写.你已经说过了。尝试释放/重新初始化变量
https://stackoverflow.com/questions/10000359
复制相似问题