【发布时间】:2017-09-21 11:01:06
【问题描述】:
我正在尝试创建一个基本警报,其中用户输入开始时间 (HHMMSS) 和结束时间 (HHMMSS),我希望仅以 (HH:MM:SS) 格式(24 小时时间)显示这个时间)。我目前正在这样做,但我遇到了分段错误。我对 C 中的编码相当陌生,因此非常感谢任何帮助。
int main() {
int present_time;
int time_for_alarm;
char outputHolder[30];
printf ("Please input present time\n");
scanf ("%d", &present_time);
printf ("Please input time for alarm\n");
scanf ("%d", &time_for_alarm);
strftime(present_time, sizeof(present_time), "%H:%M:%S", outputHolder);
while (present_time < time_for_alarm) {
sleep(1);
printf ("%d\n", present_time);
present_time++;
}
sleep(1);
printf ("ALARM");
return (0);
}
【问题讨论】:
-
请不要发布代码图片的链接。发布代码,如将其粘贴到问题中。
-
张贴代码图片是让您的问题被关闭并被否决的绝佳方式。
-
拨打
strftime时不会收到警告吗?输出缓冲区及其大小排在第一位,最后一个参数是struct tm。此外,此功能不适用于任何像123000应该是时间的旧整数;它使用<time.h>的定义 -
请不要在 cmets 中发布代码。这是不可读的。 Edit 你的问题。
-
我不知道你怎么没有得到任何警告这一行:
strftime(present_time, sizeof(present_time), "%H:%M:%S", outputHolder);因为strftime的原型如下:size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr);所以首先你应该添加一个tmstruct,struct tm *info;然后像这样使用strftime:strftime(outputholder, 30, "%H:%M:%S", info);请注意字节数与输出保持器的大小相同。