<分区>
我在 Linux 上试过下面的代码
#include<stdio.h>
int main()
{
char *p=NULL;
printf("%s",p);
return 0;
}
#include<stdio.h>
int main()
{
char *p=NULL;
printf("%s\n",p);
return 0;
}
第一个输出:(null)
而第二个会导致段错误。
为什么 \n
有这么大的不同?
<分区>
我在 Linux 上试过下面的代码
#include<stdio.h>
int main()
{
char *p=NULL;
printf("%s",p);
return 0;
}
#include<stdio.h>
int main()
{
char *p=NULL;
printf("%s\n",p);
return 0;
}
第一个输出:(null)
而第二个会导致段错误。
为什么 \n
有这么大的不同?
最佳答案
根据标准,您的两个示例都是未定义的行为。使用 %s
调用 printf
并传递 NULL 指针是 UB。
因此讨论结果是没有意义的。在一个系统上你可能会得到一个结果,而在另一个系统上你会得到另一个结果。
关于c - 打印带有和不带有换行符的空字符指针时的不同输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48245962/