大概是输入的地方(\r)有问题,有大佬帮忙看看吗(改了好几天了)。
#include<bits/stdc++.h>
#include<string>
using namespace std;
long long n,t,ch,len;
string sta;
struct node{
long long number;
string time;
string book;
};
node a[110];
void zh(long long f[10]){
f[1]+=t;
if(t>=0){
if(f[1]>=1000) f[2]+=f[1]/1000,f[1]%=1000;
if(f[2]>=60) f[3]+=f[2]/1000,f[2]%=1000;
if(f[3]>=60) f[4]+=f[3]/1000,f[3]%=1000;
}else{
long long sum=0;
if(f[1]<0){
sum=abs(f[1])/1000;
if(abs(f[1])%1000!=0) sum++,f[1]=1000-abs(f[1])%1000;
else f[1]=0;
f[2]-=sum;
}
if(f[2]<0){
sum=abs(f[2])/1000;
if(abs(f[2])%1000!=0) sum++,f[2]=1000-abs(f[2])%1000;
else f[2]=0;
f[3]-=sum;
}
if(f[3]<0){
sum=abs(f[3])/1000;
if(abs(f[3])%1000!=0) sum++,f[3]=1000-abs(f[3])%1000;
else f[3]=0;
f[4]-=sum;
}
}
}
void pd(string sta,int k){
string st=sta+' ';
long long sum=0,x=4,y=4;
long long f1[10]={0},f2[10]={0};
for(int i=0;i<st.size();i++){
if(i==13) i=17;
if(st[i]==':'||st[i]==','||st[i]==' '){
if(x>0) f1[x]=sum,x--;
else f2[y]=sum,y--;
sum=0;
}else sum=sum*10+(st[i]-48);
}
zh(f1);
zh(f2);
cout<<a[k].number<<'\n';
if(f1[4]<10) cout<<"0"<<f1[4]<<":";
else cout<<f1[4]<<":";
if(f1[3]<10) cout<<"0"<<f1[3]<<":";
else cout<<f1[3]<<":";
if(f1[2]<10) cout<<"0"<<f1[2]<<",";
else cout<<f1[2]<<",";
if(f1[1]<10) cout<<"00"<<f1[1]<<" --> ";
else if(f1[1]<100) cout<<"0"<<f1[1]<<" --> ";
else cout<<f1[1]<<" --> ";
if(f2[4]<10) cout<<"0"<<f2[4]<<":";
else cout<<f2[4]<<":";
if(f2[3]<10) cout<<"0"<<f2[3]<<":";
else cout<<f2[3]<<":";
if(f2[2]<10) cout<<"0"<<f2[2]<<",";
else cout<<f2[2]<<",";
if(f2[1]<10) cout<<"00"<<f2[1]<<'\n';
else if(f2[1]<100) cout<<"0"<<f2[1]<<'\n';
else cout<<f2[1]<<'\n';
cout<<a[k].book<<'\n';
if(k==n) cout<<"#";
else cout<<'\n';
}
int main(){
while(cin>>ch){
n++;
a[n].number=ch;
getchar();
getline(cin,a[n].time);
if(a[n].time[a[n].time.size()-1]=='\r') a[n].time.pop_back();
getline(cin,a[n].book);
if(a[n].book[a[n].book.size()-1]=='\r') a[n].book.pop_back();
getline(cin,sta);
if(sta[0]=='#') break;
if(sta.empty()==0&&sta[sta.size()-1]=='\r') sta.pop_back();
while(sta.empty()==0){
a[n].book+=('\n'+sta);
getline(cin,sta);
if(sta[0]=='#') break;
if(sta[sta.size()-1]=='\r') sta.pop_back();
}
if(sta[0]=='#') break;
}
cin>>t;
for(int i=1;i<=n;i++) pd(a[i].time,i);
return 0;
}