C printf是否用空字符终止每个字符串?
我们有这样的声明- printf(“你好世界”);C printf是否用空字符终止每个字符串?,c,C,我们有这样的声明- printf(“你好世界”); printf是否在给定字符串中的“d”之后附加空字符?定义字符串时,例如“hello world”,默认情况下以空结尾。printf除了自己的打印处理之外,不做任何与null终止相关的事情。它只接受char*作为输入。在您的示例中,“Hello World”是临时字符串,在传递到printf之前已经以null结尾。如果传递的字符串不是以null结尾的,则行为是未定义的 定义字符串时,例如“hello world”,默认情况下以null结尾。pr
printf是否在给定字符串中的“d”之后附加空字符?定义字符串时,例如“hello world”,默认情况下以空结尾。printf除了自己的打印处理之外,不做任何与null终止相关的事情。它只接受char*作为输入。在您的示例中,“Hello World”是临时字符串,在传递到printf之前已经以null结尾。如果传递的字符串不是以null结尾的,则行为是未定义的 定义字符串时,例如“hello world”,默认情况下以null结尾。printf除了自己的打印处理之外,不做任何与null终止相关的事情。它只接受char*作为输入。在您的示例中,“Hello World”是临时字符串,在传递到printf之前已经以null结尾。如果传递的字符串不是以null结尾的,则行为是未定义的 当你写作时
printf("xyz");
实际上,您正在将一个由三个字符和一个空终止符组成的字符串传递给printf
printf("xyz");
// is equivalent to
static const char xyz[] = { 'x', 'y', 'z', 0 };
printf(xyz);
两个printf
s具有相同的效果:它们将字符x、y和z写入控制台。空终止符未写入。写入时
printf("xyz");
实际上,您正在将一个由三个字符和一个空终止符组成的字符串传递给printf
printf("xyz");
// is equivalent to
static const char xyz[] = { 'x', 'y', 'z', 0 };
printf(xyz);
两个printf
s具有相同的效果:它们将字符x、y和z写入控制台。空终止符未写入。请尝试以下操作:
#include <stdio.h>
int main()
{
char string0[] = {'a', 'b', 'c'};
char string1[] = {'a', 'b', 'c','\0'};
printf("%s", string0);
puts("");
printf("%s", string1);
return 0;
}
printf()
不会将'\0'
附加到字符串。它不会对要输出的字符串进行任何更改,因为它的任务是“打印”,而不是“修改”相反,是空字符告诉printf()
字符串的结尾在哪里。尝试以下方法:
#include <stdio.h>
int main()
{
char string0[] = {'a', 'b', 'c'};
char string1[] = {'a', 'b', 'c','\0'};
printf("%s", string0);
puts("");
printf("%s", string1);
return 0;
}
printf()
不会将'\0'
附加到字符串。它不会对要输出的字符串进行任何更改,因为它的任务是“打印”,而不是“修改”相反,是空字符告诉printf()
字符串的结尾在哪里。否,printf
在任何情况下都不会这样做。否,printf
在任何情况下都不会这样做。