#include<stdio.h>
#include<string.h>
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
while(n--)
{
char a[]=">+";
char b[]="+>";
int l,num;
int i=0;
scanf("%d%d",&l,&num);
char t[100];
for(i=0;i<l-2;i++)
t[i]='-';
t[i]='\0';
char *temp;;
temp=strcat(a,t);
temp=strcat(temp,b);
for(i=0;i<num;i++)
printf("%s\n",temp);
printf("\n");
memset(t,'\0',sizeof(t));
memset(temp,'\0',sizeof(temp));
memset(a,'\0',sizeof(a));
}
}
return 0;
}
測試數據要用這個:
1
4
3 4
4 5
5 6
6 7
因為 temp=strcat(a,t); 向數組 a 的空間中寫入數據了,但 a 的空間太少,如此操作就越界了。會產生錯誤:引起數據錯誤,最嚴重的會引起程序異常報錯。
char a[]=">+"; 最好是給一個實際的大小,如 256。此大小必須保證後繼的操作不超過它。