Time Conversion in C

 ✒Given a time in 12-hour AM/PM format, convert it to military (24-hour) time.
Note: - 12:00:00AM on a 12-hour clock is 00:00:00 on a 24-hour clock.
- 12:00:00PM on a 12-hour clock is 12:00:00 on a 24-hour clock.

👉 Input 
08:05:50PM


👉 Output 
20:05:50

Code in C :
#include <assert.h>
#include <ctype.h>
#include <limits.h>
#include <math.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char* readline();
char* timeConversion(char* s) {
    static char final[9];
final[0= s[0];
final[1= s[1];
final[2= ':';
final[5= ':';
final[3= s[3];
final[4= s[4];
final[6= s[6];
final[7= s[7];
   
    if(s[8== 'A')
    {
        if(s[0]=='1' && s[1]=='2')
        {
            final[0= '0';
            final[1= '0';
        }
        else{
            final[0= s[0];
            final[1= s[1];
        }
    }


    else if(s[8]== 'P')
    {
       if(s[0== '0' && s[1< '8')
       {
           final[0= '1';
           char hr = (int)s[1];
           hr = hr+2;
           final[1]  = (char)hr;
       }
       else if(s[0== '0' && (s[1== '8' || s[1== '9'))
       {
           final[0= '2';
          if(s[2== '8') final[1= '0';
          else final[1= '1';
          
       }
       else if(s[0!= '0' && (s[1== '0' || s[1== '1'))
       {   final[0= '2';
           if(s[1== '0') final[1= '2';
           else if(s[1== '1')  final[1= '3';
       }
    
    }

return final;

}

int main()
{
    FILE* fptr = fopen(getenv("OUTPUT_PATH"), "w");

    char* s = readline();

    char* result = timeConversion(s);

    fprintf(fptr, "%s\n", result);

    fclose(fptr);

    return 0;
}

char* readline() {
    size_t alloc_length = 1024;
    size_t data_length = 0;

    char* data = malloc(alloc_length);

    while (true) {
        char* cursor = data + data_length;
        char* line = fgets(cursor, alloc_length - data_length, stdin);

        if (!line) {
            break;
        }

        data_length += strlen(cursor);

        if (data_length < alloc_length - 1 || data[data_length - 1== '\n') {
            break;
        }

        alloc_length <<= 1;

        data = realloc(data, alloc_length);

        if (!data) {
            data = '\0';

            break;
        }
    }

    if (data[data_length - 1== '\n') {
        data[data_length - 1= '\0';

        data = realloc(data, data_length);

        if (!data) {
            data = '\0';
        }
    } else {
        data = realloc(data, data_length + 1);

        if (!data) {
            data = '\0';
        } else {
            data[data_length] = '\0';
        }
    }

    return data;
}







Comments