Need this done in C. not c# or c++. Need this program done without any strtok an
ID: 3726745 • Letter: N
Question
Need this done in C. not c# or c++. Need this program done without any strtok and it needs to have argc argv and broken down to 2-3 functions.
CS 100 Project Four - Spring 2018 This program assumes that the text message logs maintained in your phone are stored in two separate files. The first file is all the incoming text messages that you received, the second is all the outgoing text messages that you sent. This program reads these two files and prints your text message history in chronological order (oldest to newest). The program takes two command-line arguments that represent the log files for all incoming text messages and all outgoing text messages. A sample execution is: ./a.out datafilel datafile2 Page two contains a sample execution of the program. The two log files capture a conversation from the first day of school last August with your mother. Look at the sample log files and the program execution before reading any further The format for these two log files is shown below: An EPOCH-time is an integer representing the number of seconds since January 1, 1970. 1519408800 translates to noon on Friday, February 23, 2018 (Central). To convert an EPOCH-time integer to a readable date, use the function shown below // this function takes an integer representing a time in seconds and // returns a formatted string (ending with a newline) containing the date char *readableTime (int sec) time t epoch time = (time t) sec ; return asctime ( localtime &epoch;_time ) ); allows you to generate EPOCH-times for any date, and see the date The website associated with any EPOCH-time. nv Your program reads from two files and prints out the text message conversations in chronological order (from the oldest message sent/received to the newest). The required format for your output is . The first 25 characters on a line are a readable version of the EPOCH time. The function readableTime (shown above) has a newline character as the very last character of the string it generates. Make sure you remove this trailing newline character (simply replace it with a '' character) The next field in the output lines is the phone number that texted you (or you texted) The text message itself is printed in a block that does not exceed 40 characters. If there are more than 40 characters in a text message, wrap . * e message to the next line. The basic algorithm for merging two files into a single output is shown below. For this project, you can assume that no two text messages will ever have the same timestam Read timel from filel Read time2 from file2 While not end-of-file-for-filel AND not end-of-file-for-file2) If timelExplanation / Answer
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>
char *readableTime(int sec)
{
char *str;
time_t epoch_time = (time_t)sec;
str = asctime(localtime(&epoch_time));
str[24] = '';
return str;
}
void convertMobile(char *m)
{
int i = 0, k = 0;
while (m[i] != '')
{
if (i == 3 || i == 6)
{
printf("-");
}
printf("%c", m[i]);
i++;
}
}
int main(int argc, char **argv)
{
FILE *in, *out;
if (argc < 2)
{
printf("Invalid. You must pass input and output file throgu runtime ");
exit(1);
}
in = fopen(argv[1], "r");
if (in == NULL)
{
printf("Unable open input file");
exit(1);
}
out = fopen(argv[2], "r");
if (out == NULL)
{
printf("Unable open output file");
exit(1);
}
int time1, time2, len;
int in1 = fscanf(in, "%d", &time1);
int in2 = fscanf(out, "%d", &time2);
char str1[1000];
while (in1 != -1 && in2 != -1)
{
//comparing input time and output time
if (time1 < time2)
{
// //printing input messages
printf("%s %4s ", readableTime(time1), "From");
fscanf(in, "%s", str1);
convertMobile(str1);
printf(" | ");
fscanf(in, "%d", &len);
//printf("%s", str1);
fscanf(in, "%[^ ]s", str1);
int i = 1;
while (str1[i - 1] != '')
{
printf("%c", str1[i]);
if (i % 40 == 0)
{
printf(" %44c ", '|');
}
i++;
}
printf(" ");
printf(" ");
in1 = fscanf(in, "%d", &time1);
}
else
{
//printing rest output messages
printf("%s %4s ", readableTime(time2), "To");
fscanf(out, "%s", str1);
convertMobile(str1);
printf(" | ");
fscanf(out, "%d", &len);
//printf("%s", str1);
fscanf(out, "%[^ ]s", str1);
int i = 1;
while (str1[i - 1] != '')
{
printf("%c", str1[i]);
if (i % 40 == 0)
{
printf(" %44c ", '|');
}
i++;
}
printf(" ");
printf(" ");
in2 = fscanf(out, "%d", &time2);
}
}
//converting rest input of messages
while (in1 != -1)
{
printf("%s %4s ", readableTime(time1), "From");
fscanf(in, "%s", str1);
convertMobile(str1);
printf(" | ");
fscanf(in, "%d", &len);
//printf("%s", str1);
fscanf(in, "%[^ ]s", str1);
int i = 1;
while (str1[i - 1] != '')
{
printf("%c", str1[i]);
if (i % 40 == 0)
{
printf(" %44c ", '|');
}
i++;
}
printf(" ");
printf(" ");
in1 = fscanf(in, "%d", &time1);
}
//converting rest output of messages
while (in2 != -1)
{
printf("%s %4s ", readableTime(time2), "To");
fscanf(out, "%s", str1);
convertMobile(str1);
printf(" | ");
fscanf(out, "%d", &len);
//printf("%s", str1);
fscanf(out, "%[^ ]s", str1);
int i = 1;
while (str1[i - 1] != '')
{
printf("%c", str1[i]);
if (i % 40 == 0)
{
printf(" %44c ", '|');
}
i++;
}
printf(" ");
printf(" ");
in2 = fscanf(out, "%d", &time2);
}
return 0;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.