gpt4 book ai didi

c - 无法将 12 小时格式转换为 24 小时格式

转载 作者:太空宇宙 更新时间:2023-11-04 06:54:48 25 4
gpt4 key购买 nike

<分区>

我正在解决一个要求将 12 小时时间格式转换为 24 小时格式的问题。我正在使用C语言来实现该程序。

我不知道为什么,但是我的程序对于 PM 中的任何输入的输出都是从 10 开始的。例如,对于输入 07:03:23PM,输出应该是 19:03:23,但是我的输出结果是 10:03:23。对于 03:03:23PM 的输入,输出应该是 15:03:23,但我的输出又变成了 10:03:23。

#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#include <limits.h>
#include <stdbool.h>

char* timeConversion(char* s)
{
int t,k,i=1,l;
char* r = malloc(50 * sizeof(char));
if(s[8]=='P')
{
if(s[0]!='1'&&s[1]!='2')
{
t = ((s[1]-'0')*1+(s[0]-'0')*10) + 12;
sprintf(r,"%d",t);
}
else
r[0]='0';r[1]='0';
for(i=2;i<8;i++)
{
r[i]=s[i];
}

}
else
for(i=0;i<8;i++)
r[i]=s[i];
r[i]='\0';
return r;
}

int main() {
char* s = (char *)malloc(512000 * sizeof(char));
scanf("%s", s);
int result_size;
char* result = timeConversion(s);
printf("%s\n", result);
return 0;
}

timeConversion 函数中,我分配了一个内存,其基地址由字符指针 r 指向。在 r 中,我存储转换后的结果。我已经使用 sprintf() 将“整数”t 的值(包含转换为 24 小时格式后的前两位时间值)存储到“字符串"r.

我已经使用调试器检查了程序,在执行 sprintf() 语句后,r 包含值 10,即使值存储在 t 第一个输入案例是 19。

我不知道是什么导致了这个问题。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com