以下为代码#include<iostream> #include<cstring> using namespace std; void strmcpy(char* s,char* t,int m); int main(){ int repeat; cin>>repeat; cin.get(); for(int i=0;i<repeat;i++){ char t[100],s[100]; int m; cin.getline(t,100); cin.get(); cin>>m; s[0]='\0'; strmcpy(s,t,m); } } void strmcpy(char* s,char* t,int m){ int len=strlen(t); if(m>len||m<1){ cout<<"error input"<<endl; } else{ for(int i=m-1;i<len;i++){ s[i-m+1]=t[i]; } s[len-m+1]='\0'; cout<<s<<endl; } }
时间: 2024-03-23 09:44:01 浏览: 111
根据您提供的代码,出现 "error input" 的原因可能是输入数据格式的问题。具体来说,我注意到您在读取输入数据时,使用了 `cin.get()` 来读取换行符,但有些情况下换行符可能不止一个,这样可能会导致输入数据格式不正确。建议您尝试使用 `cin.ignore()` 来忽略缓冲区中的多余字符,例如:
```
#include<iostream>
#include<cstring>
using namespace std;
void strmcpy(char* s,char* t,int m);
int main(){
int repeat;
cin>>repeat;
cin.ignore(); // 忽略换行符
for(int i=0;i<repeat;i++){
char t[100],s[100];
int m;
cin.getline(t,100);
cin>>m;
cin.ignore(); // 忽略换行符
s[0]='\0';
strmcpy(s,t,m);
}
}
void strmcpy(char* s,char* t,int m){
int len=strlen(t);
if(m>len||m<1){
cout<<"error input"<<endl;
}
else{
for(int i=m-1;i<len;i++){
s[i-m+1]=t[i];
}
s[len-m+1]='\0';
cout<<s<<endl;
}
}
```
您可以尝试将代码修改为上述形式,看看是否能够解决问题。如果问题仍然存在,请提供相关的测试数据和输出结果,以便更好地定位问题。
阅读全文