C语言:关于字符数组的输出

来源:百度知道 编辑:UC知道 时间:2024/09/22 16:08:15
#include<stdio.h>
#define D 6
一个程序:
void main()
{
char a[D]="abkedk";
printf("%s",a);
}
运行的结果是:abkedk烫?*
为什么不是6个字符?为什么有一堆乱码?
怎样才能使输出的字符串只有6个字符?
谢谢!

你的字符串没有结尾的'\0'这个符号了

你把字符串长度设为7

a[D] = "abkedk";

这样就可以正常输出了

字符串的结尾是有'\0'这个符号结尾的

lsd也可以不过他不是用字符串的输出了

用的是字符输出

这个字符串的长度应该是7,而不是6
因为字符串是以\0结尾的,这个结尾符占1个字节,但是不显示出来
所以你把"abkedk"放进a[6]中其实是放不下的
可以用sizeof(a)/sizeof(a[0])看下数组a占的字节数
另外有个函数strlen(a)可以计算字符串中的字符数,结果不包括结尾符'\0'

defined D 7
因为在C中默认数组最后一位是/0
我用VC++运行,这程序就通不过,因为溢出了

#define D 6
应该是#define D 7
因为字符串最后要加一个\0,\0也要分配一个空间

for(int i=0;i<D;i++)
{
printf("%s",a[i]);
}