回复 ki:
你这个方法也是对的,只不过 要把 for (j=0;)j<i-1;j++改成for (j=0;)j<i;j++或者for (j=0;)j<=i-1;j++即可。
为了更方便了解你写的语句循环情况,我把你的语句加了printf输出,了解每一次循环情况和值,这样你可以清楚看到,假如j<i-1, 输入 world , 3 的情况 下,j=3时执行了最后一次循环。就跳出循环了,没有达到我们的要求。
void fun (char a[], char b[], int n)
{
int i=0,j;
while(a[i])i++;
printf("i=%d\n",i);
for (j=0;j<i;j++)
{
printf("for循环 i=%d,j=%d,n=%d\n",i,j,n);system("pause");
if(j<n) {b[j]=a[j];printf("if语句 i=%d,j=%d,n=%d\n",i,j,n);system("pause");}
else {b[j]=a[j+1];printf("else语句 i=%d,j=%d,n=%d\n",i,j,n);system("pause");}
}