#include <stdio.h>
int main(){
char array[2];
array[0] = 'q';
array[1] = 'a';
printf("%s",array);
return 0;
}
如果你问我这个代码不行。 printf打印数组[2]像字符串,但它不是一个字符串。当我执行它时,它完美地工作。你能解释一下原因吗?
答案 0 :(得分:5)
当我执行它时,它完美无缺。
你刚刚(非)幸运:你的代码展示了未定义的行为,因为它允许printf
的{{1}}参数在字符序列的末尾运行这不是以空值终止的。
C中的字符串是%s
的序列,它必须具有值为char
的额外字符,称为空终止符。这是一种使代码无需未定义行为的方法:
0
答案 1 :(得分:3)
在C中,String
与字符数组相同。 C中没有String
这样的东西。