You might also use sscanf to parse the string.
Code:
#include <stdio.h>
typedef struct
{
int trackingId;
char transDate[9];
char transTime[5];
int route;
int driver;
char status[100];
} Transaction;
int main(void)
{
Transaction transac;
const char test[] = "TRACKING ID: 1365 DATE: 20030901 "
"TIME: 1200 ROUTE: 12 DRIVER: 005 "
"STATUS: Nobody present";
if ( sscanf(test, "TRACKING ID: %d DATE: %8s TIME: %4s "
"ROUTE: %d DRIVER: %d STATUS: %99[^\n]",
&transac.trackingId,
transac.transDate,
transac.transTime,
&transac.route,
&transac.driver,
transac.status) == 6 )
{
printf("TRACKING ID = %d\n", transac.trackingId);
printf("DATE = \"%s\"\n", transac.transDate);
printf("TIME = \"%s\"\n", transac.transTime);
printf("ROUTE = %d\n", transac.route);
printf("DRIVER = %d\n", transac.driver);
printf("STATUS = \"%s\"\n", transac.status);
}
return 0;
}
/* my output
TRACKING ID = 1365
DATE = "20030901"
TIME = "1200"
ROUTE = 12
DRIVER = 5
STATUS = "Nobody present"
*/
[EDIT]Corrected my carelessness.[/EDIT]