簡體   English   中英

打印到屏幕后C程序凍結

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM