C语音字符数组的一个问题

来源:百度知道 编辑:UC知道 时间:2024/06/17 23:56:31
#include "stdio.h"
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'未加