#c
#c
Вопрос:
Я создаю будильник на C, и сейчас он отлично работает. Единственная проблема в том, что если я ввожу время 12:00:21, оно выводит его как число, например, 120021. Я хочу создать функцию, которая добавляет :
между часами, минутами и секундами, но я не знаю, как я должен это делать.
Вот код
/*
*/
#include <stdio.h>
int update_time(int);
int main()
{
int current_time;
int alarm_time;
printf("Enter current time n"); //enter the time like a number. Ex: if the time is 12:00:21 enter it as 120021
scanf("%d", amp;current_time);
printf("Enter time for alarm n");
scanf("%d", amp;alarm_time);
while(current_time != alarm_time)
{
printf("d n", current_time);
current_time = update_time(current_time);
}
printf("Alarm!");
}
int update_time(int c_time)
{
int H, M, S;
H = c_time/10000;
M = (c_time/100) %100;
S = c_time%100;
S ;
if (S == 60)
{
M = M 1;
S = 0;
}
if (M == 60)
{
H = H 1;
M = 0;
}
if (H == 24)
{
H = 0;
M = 0;
S = 0;
}
return H*10000 M * 100 S;
}
Ответ №1:
Например:
int H, M, S;
H = current_time/10000;
M = (current_time/100) %100;
S = current_time%100;
printf("d:d:dn", H, M, S);
Но в целом я бы посоветовал использовать секунды (или миллисекунды) в качестве единицы измерения вашей переменной, а затем выполнить правильные вычисления для минут и часов. Затем это позволит вам узнать больше из самой переменной, например, вы сможете вычислить интервал времени, вычитая две переменные.
Ответ №2:
Есть несколько способов добиться этого.
- Вы можете отформатировать строку в подфункции и вернуть эту строку.
- Вы можете передать H, M, S по ссылке (я думаю, это проще).
- … (некоторые другие способы, которые я сейчас не могу представить).
int main(...) {
int H = 0, M = 0, S = 0;
...
update_time(current_time, amp;H, amp;M, amp;S);
...
printf("d:d:dn", H, M, S);
}
void update_time(int c_time, int *H, int *M, int *S)
{
// int H, M, S; <=== you do not need this line anymore
...
// do the calculation stuff
...
return;
}