簡體   English   中英

printf為%d說明符輸出字符而不是數字

[英]printf prints character instead of digit for %d specifier

在xcode c項目上,代碼為:

#include <stdio.h>

int main()
{

    int* pi = (int*) malloc(sizeof(int));
    *pi = 5;
    printf("*pi: %d\n", *pi);
    free(pi);



    return 0;
}

打印't',而不是5,盡管我明確包含了%specifier,但根據spec應該打印帶符號的十進制整數。 我希望'%c'說明符可以打印出來。 到底是怎么回事?

在此處輸入圖片說明

C動態內存分配函數在stdlib.h標頭中定義。

如果將“標准庫”添加到代碼中,則它應該可以正常運行。

另外,當malloc()無法分配所請求的空間時,它會返回空指針。 因此,您應該使用簡單的if-else塊來確保接收到的不是NULL。

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int* pi = (int*) malloc(sizeof(int));

    if(pi==NULL){
       printf("Malloc Failed!");
       return -1;
    }
    else{
        *pi = 5;
        printf("*pi: %d\n", *pi);
        free(pi);
        return 0;
    }

}

上面的代碼塊給出了預期的結果* pi:5。

希望這可以幫助,

參考: https : //en.wikipedia.org/wiki/C_dynamic_memory_allocation

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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