首先不管是什么意思 这个函数里面的s[i] s[j+1] 会编译出错的··最好用*(s+j+1)这样的形式,昨天考级就出了类似的题目,因为在子函数里面没有定义这个数组 只定义了 指针。
s[i]!=0 应该是 s[i]!='\0'的 不然数组里面有个字符时0的话就跳出来了。
这个改的话你自己改吧··增加点经验
void fun(char *s, char c)
{ int i, j, n;
for(i=0; s[i]!=0 ; i++)
if(s[i]==c) ;//这是个找你设定好的字符
{
n=0;
while(s[i+1+n]!='\0') n++;
//确定你找到的那个字符在什么位置,此时s[i+1+n]是最后一个字符了
for(j=i+n+1; j>i; j--) s[j+1]=s[j];
//注意到j-- 就是说在倒叙的填充原来的字符,s[j+1] 就意味着比原来的数组多了一个字符
s[j+1]=c ;
i=i+1;
}
之后就想是 kingbird2011 说的那样···
不过 补充一点是输入 是s=“sadag”的话··(注意是两个a)
输出是 saadaag 应为是在for那个大循环里面 这样就解释得了最后那个i+=1的意义了