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数组中。非常非常感谢~ 展开
{
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,那么在使用系统函数处理这个字符串的时候,函数就不能准确判断字符串在哪里结束.从而导致型伍数组越界.如: 第2个函数中数组如果没有加\0, 则在使用printf 函数打印字符串的时候就会在末尾显示越卜凯或界后的字符,通常情况下是乱码.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询