当我构造一个这样的字符串时:
char string[1] = {'a'};
printf("%s", string)
它会返回a4
。
为什么最后有四个?我怎么能摆脱它?
我选择这种方法是因为我需要从字符索引中创建一个字符串,例如char array[4] = {string[i],string[j],string[k]};
。
答案 0 :(得分:3)
你的字符串应以终止字符'\ 0'结尾 您可以通过以下方式完成:
char string[2] = {'a','\0'};
或者:
char string[] = "a";
答案 1 :(得分:1)
"串"在C中,本质上是以\ 0字符结尾的字符数组(以null结尾)
所以如果你想要一个字符数组,你做的很好,但它不是"字符串"。不要试图打印它。
如果您还想打印它或将其视为"字符串",则将其长度增加1,并在结尾处添加'\0'
字符。
答案 2 :(得分:0)
转换规范%s
用于输出字符串,该字符串是以零字符结尾的字符序列。
数组以这种方式声明
char string[1] = {'a'};
不包含字符串。
因此,要输出其元素,您需要指定要输出的确切字符数。例如
printf("%*.*s", 1, 1, string);
否则,在数组中为终止零保留一个元素,并使用转换规范%s
。例如
char string[2] = {'a'};
printf( "%s", string );