C语音字符数组的一个问题
来源:百度知道 编辑:UC知道 时间:2024/06/17 23:56:31
#include "stdio.h"
void main()
{
char a[4]={'a','s','d','f'};
printf("%s",a);
}
输出是:asdf?↑
这是怎么回事?
void main()
{
char a[4]={'a','s','d','f'};
printf("%s",a);
}
输出是:asdf?↑
这是怎么回事?
改成char a[5] = {'a','s','d','f'};就行了。原因:数组元素在内存中顺序排列,而%s只有遇到'\0'也就是数值0才结束。你定义4个元素的数组,放了4个元素,内存中排在这4个元素之后的内存中存放的值不定,所以会输出乱码。如果定义5个元素的数组,存放4个元素,最后一个会自动填0。
没有0结束符 ,写成char a[5]={'a','s','d','f', 0};就对了
把输出格式%s改为%c
在此你要注意C语言的一个重要特性: C用空字符0来标识一个字符串的结束,也就是说当用%s输出时,直到它遇到0才会结束。
在数组最后加上一个0(注意这个0是0不是‘0’(这是个字符)),就行了。
char a[5]={'a','s','d','f',0};
或
char *a="asdf"
结束标记'\0'未加