当我的字符串在 C 程序中包含空字符时?
When my string contain null character in c program?
我仍然不知道,我的 c 程序中的字符串何时包含以 null 结尾的以及何时不包含。
我的代码示例
...
float t0 = 2.43, t1 = 3.42, t2 = 1, t3 = 10.9;
...
printf("%.2f %.2f %.2f %.2f", t0, t1, t2, t3);
...
如果我像在我的代码中一样使用 printf,C 程序是否会自动在打印或不打印的字符串末尾添加空终止符?
If i use printf like in my code, does the string that printed contain null character at the end?
的答案是肯定的,它包含但您不会在 printf 中看到它。
当表示为字符数组时,空终止符表示字符串的结尾。使用 printf 函数时,您将指向字符串开头的指针作为参数传递,它将打印字符串直到 NULL 终止符。
实际上是的,你声明了吗char format[]="%f %f\n";
使用 gdb 或添加一些研究代码,您将能够看到终止字符串的 nul 字节。
的第一个参数
printf("%.2f %.2f %.2f %.2f", ...
是一个字符串文字 ("%.2f %.2f %.2f %.2f"
) 是的,字符串文字也是 0
终止的。
问:如果我像在我的代码中一样使用 printf,C 程序是否会自动在打印或不打印的字符串末尾添加空终止符?
答:不会。printf()
通常不会打印终止空字符 '[=11=]'
。相反,"%.2f %.2f %.2f %.2f"
导致输出如“1.12 2.23 3.34 4.45”,最后一个字符打印为 '5'
.
[编辑]
格式 "%.2f %.2f %.2f %.2f"
是一个以空终止符 '[=11=]'
结尾的字符串。 printf()
的打印输出没有打印 '[=11=]'
。格式中的空终止符 '[=11=]'
向 printf()
发出停止信号。不打印空终止符 '[=11=]'
本身。
注意:在 C 中,C 字符串 总是有一个终止空字符 '[=11=]'
。如果 char
的数组不包含一个,则它不是字符串。所以上面例子中printf()
输出的不是一个字符串,而只是一串字符。
我仍然不知道,我的 c 程序中的字符串何时包含以 null 结尾的以及何时不包含。
我的代码示例
...
float t0 = 2.43, t1 = 3.42, t2 = 1, t3 = 10.9;
...
printf("%.2f %.2f %.2f %.2f", t0, t1, t2, t3);
...
如果我像在我的代码中一样使用 printf,C 程序是否会自动在打印或不打印的字符串末尾添加空终止符?
If i use printf like in my code, does the string that printed contain null character at the end?
的答案是肯定的,它包含但您不会在 printf 中看到它。
当表示为字符数组时,空终止符表示字符串的结尾。使用 printf 函数时,您将指向字符串开头的指针作为参数传递,它将打印字符串直到 NULL 终止符。
实际上是的,你声明了吗char format[]="%f %f\n";
使用 gdb 或添加一些研究代码,您将能够看到终止字符串的 nul 字节。
printf("%.2f %.2f %.2f %.2f", ...
是一个字符串文字 ("%.2f %.2f %.2f %.2f"
) 是的,字符串文字也是 0
终止的。
问:如果我像在我的代码中一样使用 printf,C 程序是否会自动在打印或不打印的字符串末尾添加空终止符?
答:不会。printf()
通常不会打印终止空字符 '[=11=]'
。相反,"%.2f %.2f %.2f %.2f"
导致输出如“1.12 2.23 3.34 4.45”,最后一个字符打印为 '5'
.
[编辑]
格式 "%.2f %.2f %.2f %.2f"
是一个以空终止符 '[=11=]'
结尾的字符串。 printf()
的打印输出没有打印 '[=11=]'
。格式中的空终止符 '[=11=]'
向 printf()
发出停止信号。不打印空终止符 '[=11=]'
本身。
注意:在 C 中,C 字符串 总是有一个终止空字符 '[=11=]'
。如果 char
的数组不包含一个,则它不是字符串。所以上面例子中printf()
输出的不是一个字符串,而只是一串字符。