Output Limit Exceeded的一道题,求帮忙要怎么解决
题目挺简单的,我用函数strncpy去做,但是一直是Output Limit Exceeded,自己找不出哪个地方出问题了,求大家帮忙看看。题如下:
给出一个字符串s;给出两个整数 x, y ,请你截取从字符串的第 x 个字符开始,长度为y的子串。
如果 x+y > s的长度,则接着从头开始取下去。约定:字符串首字符的位置是0
Input
有多个测试用例。每个测试用例占2行。
第一行是一个字符串s,长度不超过10万。
第二行是两个整数 x 和 y ,表示从第 x 个位置开始取 y 个字符,0 ≤x,y ≤ s的长度。
Output
为每个测试用例单独输出一行结果:取得的子串。如果无法取得长度 > 0 的子串,输出 none
Sample Input:
abcde
3 3
0123456789
7 3
Sample Output:
dea
789
代码如下:
#include<stdio.h>
#include<string.h>
int main()
{
char a[100000];
int x,y,t;
while(scanf("%s",&a)!=EOF)
{
char b[100000]={},c[100000]={};
scanf("%d%d",&x,&y);
if(y<=0)
printf("none\n");
else{
t=strlen(a);
if(x+y<=t){
strncpy( b , a+x ,y );
puts(b);}
else{
strncpy( b , a + x , y );
strncpy( c,a , y - ( t - x) );
printf("%s",b);
printf("%s\n",c);
}
}
}
return 0;
}