C语言改错题,题目是:输入一串字符,并在字符串中从第m个字符开始截取n个字符

#include <stdio.h>
#include <string.h>
void main()
{
char str[100],sub[100];
int m,n,len,i;
printf("Enter string:");
gets(str);
printf("\nEnter m n:");
scanf("%d%d",&m,&n);
len=strlen(str);
if( m-1+n>len )
printf("Can't run with %d and %d!\n",m,n);
else
{ i=0;
/**/ while(i<=n) /**/ i<n
{
/**/ sub[i]=str[m+i]; /**/ sub[i]=str[m+i-1];
i++;
}
/**/ sub[i]='\n'; /**/ sub[i]='\0'
printf("sub string is:%s\n",sub);
}
getch();
}
请问中间改错那些为什么是那样子,求程序整个过程解析

{ i=0;
/**/ while(i<=n) /**/ i<n//i是整型,i<n说明i最大为n-1,0到n-1,刚好n个数;
{
/**/ sub[i]=str[m+i]; /**/ sub[i]=str[m+i-1];//跟上一个类似,写成str[i+(m-1)]你能明白吧?
i++;
}
/**/ sub[i]='\n'; /**/  sub[i]='\0'//因为i++是先用后加1,所以sub[i]代表的是第n+1个元素;之所以赋值'\0',是因为数组sub[]中存放的是字符串,应以'\0'为结束标志。
printf("sub string is:%s\n",sub);
}
getch();
}

温馨提示:答案为网友推荐,仅供参考
相似回答