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