为什么这样输出不对?
#include<stdio.h>
int fun(char xx[])
{
char yy[80];
int i,j;
for(i=0;xx[i];i++)
{
yy[i]=xx[i];
}
for(i=0;i<80;i++)
{
if(xx[i]>='0'&&xx[i]<='9')
{
xx[i]='$';
xx[i++]=yy[i];
}
else xx[i++]=yy[i];
}
}
int main()
{
char xx[80];
scanf("%s",xx);
fun(xx);
printf("%s",xx);
return 0;
}
为什么这样就可以?(为什么函数里要让t[i]='\0',s[i]='\0'? 为什么for语句里j不要自增?函数调用数组名不是地址传递吗,为什么还要return 0?)
#include <stdio.h>
int fun(char s[])
{
char t[80];
int i, j;
for(i=0; s[i]; i++)
t[i]=s[i];
t[i]='\0';//为什么要加这个?
for(i=0,j=0; t[i]; i++)//j不要自增吗?
if(t[i]>='0' && t[i]<='9')
{
s[j++]='$';
s[j++]=t[i];
}
else
s[j++]=t[i];
s[j]='\0';//还有这个
return 0;//调用函数名不是地址传递吗,为什么还要return 0?
}
int main()
{
char s[80];
printf ( "Enter a string:" );
scanf ("%s", s);
fun(s);
printf ("The result: %s\n", s);
return 0;
}