【发布时间】:2019-04-03 14:05:42
【问题描述】:
我想像 Java 的 Arrays.ToString(array); 一样在 C 中打印 char 数组。它打印我想要的内容,但在最后放置了一些字符。我猜是因为\0这个特殊字符。
我声明了一个字符数组char letters[] = {'g','y','u','c','n','e'};
并尝试打印:printf("\n [%s]:", letters);
输出为:[gyucneÇ_=]
这是Java代码:
char[] letters= {'g','y','u','c','n','e'};
System.out.print( Arrays.toString(letters) );
输出是:
[g, y, u, c, n, e]
我想要输出 Java 代码。我想知道我是否也希望它包含逗号,我必须一个一个打印字符还是可以一次打印?
当然,我的首要任务是删除打印在 C 代码末尾的特殊字符。
【问题讨论】:
-
为什么不将数组声明为
char letters[] = "gyucne";? -
C 字符串以空值结尾,这意味着它们包含一个值为 0 的字节来标记字符串数据的结尾。不包含此类终止符的
char数组不是字符串,并且尝试像使用它一样使用它会产生未定义的行为。您提供的结果证明了 UB 的无数可能表现之一。 -
有什么区别?
-
char letters1[] = {'a', 'b', 'c'};和char letters2[] = "abc";的区别在于,字母1 有3 个元素,字母2 有4 个元素,第4 个元素是letters2[3] == '\0'。 -
问题被回答(回滚)后不要更改! 别忘了
'\0'字符串终止符。