C语言结构体计算时间差问题

编写函数BeforTime(time,duration)计算时间time之前“xx小时xx分xx秒”的时间。时间以24小时制格式表示。
BeforTime函数的返回值为计算结果与初始时间之间的日期差。如果是同一天返回0,是前n天则返回n。
用结构体类型存储时间。
提示:先计算秒,再计算分,最后计算小时。例如计算“09:19:52”前“1:20:30”的方法是:
秒:52−30=22,借0
分:19−20−0+60=59,借1
时:9−1−1=7,借0
测试输入1:
09:19:52
1:15:30
输出:
同一天08:04:22
测试输入2:
00:19:52
1:20:30
输出:
前1天22:59:22
测试输入3:
00:19:52
25:30:59
输出:
前2天22:48:53

问题相关代码,请勿粘贴截图

#include <stdio.h>
struct CLOCK
{
int hour;
int minute;
int second;
};
int BeforeTime(struct CLOCK *time,struct CLOCK duration);

int main()
{
struct CLOCK timeNow,timePast;
int n;
scanf("%d:%d:%d",&timeNow.hour,&timeNow.minute,&timeNow.second);
scanf("%d:%d:%d",&timePast.hour,&timePast.minute,&timePast.second);
n = BeforeTime(&timeNow,timePast);
if(n == 0)
printf("同一天");
else
printf("前%d天",n);
printf("%02d:%02d:%02d",timeNow.hour,timeNow.minute,timeNow.second);
return 0;
}
//此函数计算time时刻前duration的时间;
//函数的返回值:计算结果与time相比是同一天,应返回0,是前n天,则返回n
int BeforeTime(struct CLOCK *time,struct CLOCK duration)
{
int sum=0,flag=0;
if(time->second<duration.second)
{
--time->minute;
time->second+=60;
}

time->second=time->second-duration.second;
if(time->minute<duration.minute){
    --time->hour;
    time->minute += 60;
    if(time->hour<duration.hour)
    {time->hour+=24;flag=1;}
}

time->minute= time->minute -duration.minute;

time->hour = time->hour - duration.hour;
sum=((time->second+time->minute60+time->hour3600)-(duration.second+duration.minute60+duration.hour3600))/3600;
if(sum<=24)
return 0+flag;
else return sum/24+flag;
}

运行结果及报错内容

第三个测试过不了

我的解答思路和尝试过的方法
我想要达到的结果

int BeforeTime(struct CLOCK* time, struct CLOCK duration)
{
int sum = 0, flag = 0;

if (duration.hour >= 24)
    sum = duration.hour / 24;
duration.hour = duration.hour % 24;

if (time->second < duration.second)
{
    --time->minute;
    time->second += 60;
}

time->second = time->second - duration.second;
if (time->minute < duration.minute) {
    --time->hour;
    time->minute += 60;

}
time->minute = time->minute - duration.minute;

if (time->hour < duration.hour)
{
    time->hour += 24; 
    flag = 1;
}
time->hour = time->hour - duration.hour;
return flag + sum;

}


可以查看手册:计算时间差-difftime 中的内容