将NULL传递给printf%s

Ani*_*mar 1 c

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

int main() {
    char *ptr = NULL;

    printf("%s", ptr);//The output is null
    //  printf("%s\n", ptr); //addition of **\n** give segmentation fault 

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

第一个printf输出:(null).但为什么第二个printf产出是: Segmentation fault (core dumped)只是添加:\n

gio*_*gim 10

printf("%s",ptr);

这里printf需要一个有效的指针,它指向null终止的字符串,你不能将NULL传递给它.如果这样做,您将触发未定义的行为,并且无法推断程序的输出.

PS.我找到了一个答案,可能会对您可能感兴趣的事情稍微详细一些.请参阅此处.实际上你的问题似乎与那个问题重复.