printf 为 %d 说明符打印字符而不是数字

printf prints character instead of digit for %d specifier

在xcodec项目中,代码:

#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,根据规范应该打印带符号的十进制整数。我希望 '%c' 说明符会打印出来。到底是怎么回事?

C 动态内存分配函数在 stdlib.h 头文件中定义。

如果您将 'standard library' 添加到您的代码中,它应该 运行 没有任何错误。

此外,malloc() returns 一个空指针,当它无法分配所请求的 space 时。所以,你应该通过使用一个简单的 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