[英]C Program freezes after printing to screen
我的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")
在最后一個printf語句中包含換行符。
printf("msg to all: %s\n",formattedMsg);
這將清除緩沖區。
strlen(MSG_PRFX_ALL)=3
並且memcpy
僅復制了3個字母,而沒有\\0
加上printf formattedMsg[strlen(MSG_PRFX_ALL)]='\\0'
嘗試在最后一個printf
之后添加以下行:
fflush(stdout);
更換
memcpy(formattedMsg, MSG_PRFX_ALL, strlen(MSG_PRFX_ALL));
同
strcpy(formattedMsg, MSG_PRFX_ALL);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.