C语言 将字符串a中的元音字母复制到字符串b,为什么总是多统计一个随机字符

2024-12-17 08:45:47
推荐回答(2个)
回答1:

for(i=0,m=0;i {if(M'A'|M'U'|M'I'|M'E'|M'O'|M'a'|M'u'|M'i'|M'e'|M'o')
{b[m]=a[i];
m++;}}
b[m]='\0';
i从零起的话,就应该是小于n而不应该是小于等于了,要不,就多循环了一次,
就像楼上所说的那样,然后我在最后循环结束后,又给你加了一个
b[m]='\0';这个,是字符串结束标志,如果不写的话,有的时候编译后会出现汉字什么的。反正,我自己是出现过这种情况,所以,我都是在最后面写上结束符的。因为你这个最后m已经自加了,所以,直接
写b[m]='\0';就可以了,

回答2:

因为你的m大于实际上的a数组里的字母个数。大了1。

i<0……m++

而数组如果没有给定具体值,却有分配内存,这个内存地址里存放的是什么你当然不知道了