C 如何使用整数打印空字符串

C 如何使用整数打印空字符串,c,printf,C,Printf,我有以下代码 #include<stdio.h> #include<string.h> int main (void) { unsigned int pqr = 201; unsigned int def = 113; printf("The values are,%u,%s,%s,%u\n", pqr,"\0","\0",def); printf("The values are,%u,%d,%d,%u\n", pqr,atoi("\

我有以下代码

#include<stdio.h>
#include<string.h>

int main (void)
{

    unsigned int pqr = 201;
    unsigned int def = 113;

    printf("The values are,%u,%s,%s,%u\n", pqr,"\0","\0",def);
    printf("The values are,%u,%d,%d,%u\n", pqr,atoi("\0"),atoi("\0"),def);


}
这些值是,201,,,113 数值为,201,0,0113

如果值字符串设置为NULL,并且我使用了格式说明符%S,则第一个printf将不提供任何信息。如何在第二个printf中使用格式说明符%d获得相同的结果。目前它给出0而不是零

如果值字符串设置为NULL,并且我使用了格式说明符%S,则第一个printf将不提供任何内容

是空字符串\0是一个空字符串,带有附加的空字符。它与NULL不同。为s转换说明符传递空指针是未定义的行为

如何在第二种情况下使用格式说明符%d获得相同的结果


你不能。具有%d转换规范的printf打印一个int值;它不能打印任何内容。

只需测试它是否为0,如果为,则打印您想要的内容

{
    int number = 0;
    char dummy[24];
    printf("This is the number: %s\n", (number == 0)? "" : itoa(number, dummy, 10));
}
三元运算符?:应该检查数字是否为零,如果为零,则返回打印的空字符串

如果数字不是零,它将以10为基数运行一个整数到Ascii,并返回该字符串

要使itoa工作,它需要一个缓冲区来存储其结果,因此需要伪变量。

%d始终打印一个整数,因此始终打印一些数字序列。没有空整数的概念,所以不能让它什么都不打印

顺便说一下,\0不是空字符串;空值为\就所有字符串而言,0相当于。

atoi函数将字符串转换为整数,因此为什么在第二种情况下打印0,因为空字符串\0的atoi是0,而随机字符串(不是数字)的atoi也是0


%d用于显示整数,%s用于显示字符串

\0!=空\对于所有字符串而言,0只是一个空字符串,它等效于。您希望从打印“\0”中得到什么空“字符串”?所有字符串用途。我知道有不同之处。