C语言在数组后面添加结束符'\0'的小问题~

我觉得很相似的两个程序,为什么第一个不需要加结束符,第二个必须加呢?【1】intfun(intmm,intb[]){intk=0;inti,j;for(j=1;j<=mm... 我觉得很相似的两个程序,为什么第一个不需要加结束符,第二个必须加呢?【1】int fun(int mm,int b[])
{
int k=0;
int i,j;
for(j=1;j<=mm;j++)
{
int p=0;
for(i=2;i<j;i++)
{
if(j%i==0)
p=1;
break;
}
if(!p)
{
b[k++]=j;
}
}
return k;
}该函数的功能是求出小于等于mm的所有素数,放在b数组中,返回素数个数;【2】void fun(char *str,char s[])
{
int i;
int k=0;for(i=0;str[i];i++)
if(i%2==0&&(str[i]-'0')%2==0)
{
s[k++]=str[i];}
【s[k]='\0';】该句在第一个函数中没有出现。
}该函数功能是将str字符串中下标为偶数且ASCII值也是偶数的字符放在s数组中。非常非常感谢~
展开
 我来答
匿名用户
2013-04-28
展开全部
一个是整型数组,一个是字符数组,不一样的.整型数据不是以\0结束的,而字符数组最后要存放一个\0的.如int a[4],可以存放4个int型数据,如int a[4]={1,2,3,4}char a[4],也可存放4个字符,但最后一个字符得为\0,不然不能正常输入字符串.char a[4]={'a','b','c','\0'},当然'\0'也可以省略,char a[4]={'a','b','c'}但不能是char a[4]={'a','b','c','d'},输出的时候会有乱码,因为没有结束标志.
匿名用户
2013-04-28
展开全部
在字符串数组的末尾加上\0表示字符串结束. 如果没有这个\0,那么在使用系统函数处理这个字符串的时候,函数就不能准确判断字符串在哪里结束.从而导致数组越界.如: 第2个函数中数组如果没有加\0, 则在使用printf 函数打印字符串的时候就会在末尾显示越界后的字符,通常情况下是乱码.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式