如果输入到字符数组中的字符数小于指定的空格量,会发生什么情况

时间:2017-07-06 16:01:03

标签: c arrays character project

char ch_arry[20] = { S, A, L, L, Y};
printf( "%s", ch_arry[] );

它会用空字符填充数组的末尾吗?

3 个答案:

答案 0 :(得分:6)

从C标准(6.7.9初始化)

  

19初始化应在初始化程序列表顺序中进行,每个顺序   初始化程序为特定的子对象提供覆盖任何子对象   以前列出的同一子对象的初始值设定项; 151)全部   未初始化的子对象应初始化   隐含地与具有静态存储持续时间的对象相同。

  

10如果未初始化具有自动存储持续时间的对象   显然,它的价值是不确定的。如果一个对象有静态   或线程存储持续时间未明确初始化,然后:

     

- 如果它有指针类型,则将其初始化为空指针;

     

- 如果它有算术类型,则将其初始化为(正数或   无符号)零;

     

- 如果是聚合,则根据这些规则初始化(递归)每个成员,并将任何填充初始化为零   比特;

所以如果你有这样的声明

char ch_arry[20] = { 'S', 'A', 'L', 'L', 'Y'};

然后显式未初始化的所有数组元素将使用零隐式初始化。

答案 1 :(得分:4)

其余15个字符设置为\0。这是C的有用功能。

请注意,您需要使用

char ch_arry[20] = { 'S', 'A', 'L', 'L', 'Y'};

除非你有一些疯狂的宏诡计,并且

printf("%s", ch_arry);

答案 2 :(得分:0)

你回答了自己的问题。

剩下的15个字符将被赋予空值。

你声明数组是错误的...如果你想要ch_array = SALLY,你应该对你的每一个角色使用单个倒置的逗号(' S'这样)。

输出使用printf("%s",ch_arry);而不是printf("%s",ch_arry []);