当我的字符串在c程序中包含空字符时?

时间:2015-03-10 08:50:43

标签: c string printf null-terminated

我仍然不知道,当我的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结尾吗?

4 个答案:

答案 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()停止。

注意:在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字节终止字符串。