题目如下:
我一开始的代码是:
#include <bits/stdc++.h>
using namespace std;
void strmcpy(char *s,char *t,int m)
{
int i=m-1;
for(i=m-1;t[i]!='\0';i++)
{
*(s+i)=*(t+i);
}
}
int main()
{
int repeat,m,i,len;
char a[1000],b[1000];
char *s=a,*t=b;
cin>>repeat;
for(i=repeat;i>0;i--)
{
getchar();
cin.getline(b,1000);
len=strlen(b);
cin>>m;
if(len<m)
{
cout<<"error input"<<endl;
continue;
}
strmcpy(s,t,m);
for(i=m-1;i<len;i++)
{
cout<<*(s+i);
}
cout<<endl;
}
return 0;
}
结果是这样子的:
也就是两次之后并没有停止,还是继续下去
后来改成了:
#include <bits/stdc++.h>
using namespace std;
void strmcpy(char *s,char *t,int m)
{
int i=m-1;
for(i=m-1;t[i]!='\0';i++)
{
*(s+i)=*(t+i);
}
for(i=m-1;i<strlen(t);i++)
{
cout<<*(s+i);
}
cout<<endl;
}
int main()
{
int repeat,m,i,len;
char a[1000],b[1000];
char *s=a,*t=b;
cin>>repeat;
for(i=repeat;i>0;i--)
{
getchar();
cin.getline(b,1000);
len=strlen(b);
cin>>m;
if(len<m)
{
cout<<"error input"<<endl;
continue;
}
strmcpy(s,t,m);
}
return 0;
}
结果是这样子的:
很想弄懂
仅仅是“控制输出的代码块”换了个位置结果就不同了吗