/* =============================================================================
* File - main.c
* -----------------------------------------------------------------------------
* <https://forums.macrumors.com/threads/907772/>
* cars.txt
Mercury Sable 99942 1 18 2001 5 30 1991 16 12.5
Mazda Navajo 123961 2 20 1993 6 15 1993 19.3 16.7
Toyota Camry 8223 6 13 2009 4 12 2009 15 8.9
*/
/* =============================================================================
* -----------------------------------------------------------------------------
*/
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* =============================================================================
* -----------------------------------------------------------------------------
*/
struct auto_struct
{
char make[15];
char model[30];
int mmon;
int mday;
int myear;
int pmon;
int pday;
int pyear;
float fuelcap;
float fuellevel;
float odometer;
};
typedef struct auto_struct auto_t, * auto_ptr;
/* =============================================================================
* -----------------------------------------------------------------------------
*/
void print_auto(FILE* pf, auto_t vehicle)
{
fprintf(pf, "%s %s %d %d %d %d %d %d %f %f %f\n", vehicle.make, vehicle.model, vehicle.mmon, vehicle.mday, vehicle.myear, vehicle.pmon, vehicle.pday, vehicle.pyear, vehicle.fuelcap, vehicle.fuellevel, vehicle.odometer);
}
/* =============================================================================
* -----------------------------------------------------------------------------
*/
int scan_auto(FILE* pf, auto_ptr p)
{
return fscanf(pf, "%s %s %d %d %d %d %d %d %f %f %f", p->make, p->model, &p->mmon, &p->mday, &p->myear, &p->pmon, &p->pday, &p->pyear, &p->fuelcap, &p->fuellevel, &p->odometer);
}
/* =============================================================================
* -----------------------------------------------------------------------------
*/
int main(int argc, const char* const argv[])
{
int result;
FILE* pfSrc = 0;
FILE* pfDst = 0;
auto_t vehicle;
result = EXIT_FAILURE;
pfSrc = fopen("cars.txt", "r");
if ( ! pfSrc ) { goto bail; }
pfDst = fopen("output.txt", "w");
if ( ! pfDst ) { goto bail; }
while ( EOF != scan_auto(pfSrc, &vehicle) )
{
print_auto(pfDst, vehicle);
}
result = EXIT_SUCCESS;
bail:
if ( pfDst ) { flose(pfDst); }
if ( pfSrc ) { flose(pfSrc); }
return result;
}