Я хочу создать функцию для добавления «:» к моему будильнику

#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:

Есть несколько способов добиться этого.

  1. Вы можете отформатировать строку в подфункции и вернуть эту строку.
  2. Вы можете передать H, M, S по ссылке (я думаю, это проще).
  3. … (некоторые другие способы, которые я сейчас не могу представить).
 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;
}