rzr*_*scm 2 c string c-strings
我需要在数组中定义字符并打印字符串...但它总是打印为string7(在这种情况下,test7)...我在这里做错了什么?
#include <stdio.h>
int main() {
char a[]={'t','e','s','t'};
printf("%s\n",a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Alo*_*ave 13
为什么会这样?
因为你没有\0终止你的数组,所以你得到的是未定义的行为.
幕后可能发生什么?
在printf尝试打印字符串直到遇到一个\0和你的情况弦从未\0终止,因此随机打印,直到它遇到\0.
请注意,超出已分配内存范围的读取是未定义行为,因此从技术上讲,这是一个UB.
你需要做些什么来解决这个问题?
你需要:
char a[]={'t','e','s','t',`\0`};
Run Code Online (Sandbox Code Playgroud)
要么
char a[]="test";
Run Code Online (Sandbox Code Playgroud)