我的C程序刚刚在打印到终端的“清零”字符串之后冻结。我无法找出原因...C程序在打印到屏幕后会冻结
int formattedMsgLen = strlen(msg)+strlen(from)-strlen(MSG_PRFX_ALL) + 1;
printf("formattedMsgLen = %d\n",formattedMsgLen);
char * formattedMsg = (char*)malloc(formattedMsgLen) ;
if (NULL == formattedMsg) {
perror("malloc:");
sem_post(&writeSem);
NAMES_MUTEX_UNLOCK;
exit(EXIT_FAILURE);
}
printf("cont. building msg\n");
//memset(formattedMsg, 0, formattedMsgLen);
printf("zeroed\n");
memcpy(formattedMsg, MSG_PRFX_ALL, strlen(MSG_PRFX_ALL));
printf("msg to all: %s",formattedMsg);
编辑:
#define MSG_PRFX_ALL ("All")
确定that' MSG_PREFIX_ALL'适合'formattedMsg'? – utdemir
您可能需要在该printf之后换行,因为您的缓冲区可能不会冲洗。你确定它冻结了吗? – Hut8
我确定它没有填充它,因为我确定MSG_PREFIX_ALL较小。他们应该是在相同的大小? – Bush