#include <stdio.h>
int main(){
char array[2];
array[0] = 'q';
array[1] = 'a';
printf("%s",array);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果你问我这个代码不应该工作.printf打印数组[2]像字符串,但它不是一个字符串.当我执行它时,它完美地工作.你能解释一下原因吗?
当我执行它时,它完美地工作.
你刚刚得到(联合国)幸运:你的代码表现出不确定的行为,因为它让printf的%s参数流失的字符序列,是不是空的阶段结束.
C中的字符串是一个序列char,它必须有一个带有值的额外字符0,称为空终止符.这是一种使代码无需未定义行为的方法:
char array[3];
array[0] = 'q';
array[1] = 'a';
array[2] = '\0';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
136 次 |
| 最近记录: |