✒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
Post a Comment