debug#include<stdio.h> char *substr(char *s,int startloc,int len) { static char a[100]; int i,j=0; for(i=startloc;i<startloc+len;i++) a[j++]=s[i]; return a; } int main() { int startloc,len; char s[100],a[100]; char *ch=a; scanf("%d%d",&startloc,&len); gets(s); ch=substr(s,startloc,len); puts(a); return 0; }
时间: 2023-12-01 14:02:07 浏览: 82
在这段代码中有一个问题,就是gets函数会读取到上一个输入的回车符,导致输入的字符串实际上是空串。为了解决这个问题,可以在读取输入startloc和len后加一行代码来清除缓冲区中的回车符:
```
scanf("%d%d",&startloc,&len);
getchar(); //清除回车符
gets(s);
```
此外,还有一个问题就是在函数substr中,返回的是静态数组a的地址,但是此数组是在函数内部定义的,当函数结束后,该数组就会被销毁,返回的地址也就无效了。为了解决这个问题,可以将a数组定义为全局变量或者通过动态内存分配来解决。
阅读全文