本帖最后由 大马强 于 2021-8-1 00:17 编辑
能力有限,只能对源代码做出一点改动才能完成要求#include<stdio.h>
#include<string.h> //strlen()好像要这个,不然会警告
int main(){
char str[81],substr[81];
int k=0,n,loc,len,m; // 数学能力差不能找到不改动原代码的方法,请来一个外援来限制循环
gets(str); //正确
scanf("%d%d",&loc,&len);
if(loc<1 || loc>strlen(str) || len<=0) // 原来是 loc>1
{
substr[0]='\0';
printf("输入不正确!");
}
else{
m = loc+len-1 ;
if (loc+len-1 > strlen(str))
m = strlen(str) - loc +1; //当截取的长度超过母串长度,子串长度即为截取位置到母串末尾的长度
// 子串和母串的下标要同步前移, n++,k++
for(n=loc-1;n<m;n++,k++)
substr[k]=str[n];
substr[k]='\0'; //给substr加一个终字符,这样编译器读取的时候就知道读到这里就结束了
}
printf("Sub string is %s, its length is %d\n",substr,k);
return 0;
}
|