【发布时间】:2016-05-25 21:47:25
【问题描述】:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
int main()
{
int hh,mm,ss;
char ap[2];
scanf("%d%d%d%s",&hh,&mm,&ss,ap);
if(stricmp(ap,"AM")!=0)
{
hh+=12;
}
printf("%d:%d:%d",hh,mm,ss);
return 0;
##
此代码将 12 小时制时钟格式转换为 24 小时制时钟格式
##}
【问题讨论】:
-
旁白:
char ap[2];太短了。它不能保存以 nul 结尾的字符串"AM"。 -
感谢您的评论。因此,在字符串中,为空字符分配了 1 个额外的内存位置,因为字符串附加了“/0”
-
没错,如果你输入
am来满足%s格式写入ap[2]你会导致缓冲区溢出。 -
stricmp不是标准的。在 Linux 上使用strcasecmp或在 Windows 上使用_stricmp -
@nishchalpro 抱歉:这就是为什么它被发布为“旁白”评论,而不是答案。
标签: c