我想像Java的Arrays.ToString(array);
一样在C中打印char数组。它会打印我想要的内容,但会在最后添加一些字符。我猜是因为有特殊字符\0
。
我声明了一个char数组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代码末尾打印的特殊字符。
答案 0 :(得分:1)
单独打印每个字母。您没有字符串。您无法从<string.h>
或printf()
或其他期望 string 的其他函数中调用大多数函数。
char letters[] = {'g', 'y', 'u', 'c', 'n', 'e'}; // ATTENTION: letters is not a string!
for (int i = 0; i < sizeof letters; i++) {
putchar(letters[i]);
}
putchar('\n'); // end with a newline
答案 1 :(得分:0)
我声明了一个char数组:
char letters[] = {'g','y','u','c','n','e'};
但这不是C字符串(因为它不是 not NUL 终止的!)。您应该改为进行编码:
const char letters[] = {'g','y','u','c','n','e',(char)0};
(或使用'\0'
代替(char)0
....)或更好:
const char letters[] = "gyucne";
都和完全等效。
然后,您可以编写类似printf("letters are %s\n", letters);
的代码,因为您的letters
现在是C字符串。
NB。请另外阅读http://utf8everywhere.org/和How to debug small programs-两者实际上都与您的情况相关。另请参见至少一些C reference网站。