从C中的索引构造字符串

时间:2017-09-14 20:07:21

标签: c string char

当我构造一个这样的字符串时:

char string[1] = {'a'};
printf("%s", string)

它会返回a4。 为什么最后有四个?我怎么能摆脱它?

我选择这种方法是因为我需要从字符索引中创建一个字符串,例如char array[4] = {string[i],string[j],string[k]};

3 个答案:

答案 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 );