Hi,
I have to alter the format of a date in a string and have written this...
Code:
char process_date(FILE ** p_fp, char c)
{
char format[11];
int index = 0;
/* grab each character from the field */
if(c != ';')
{
index = 0;
*(format) = NULL;
while((c != ' '))
{
format[index] = c;
index++;
c = getc(p_fp[OUT_FILE]);
}
/* nullify the string */
*(format + index) = NULL;
/* there are four types of date that can be received
* in the input files
* 1/1/2003 00:00:00
* 1/11/2003 00:00:00
* 11/1/2003 00:00:00
* 11/11/2003 00:00:00
* and the finished item should look like this
* 11/11/2003
* this is dealt with as follows
*/
if(format[1] == '/')
{
putc('0', p_fp[FIN_FILE]);
putc(format[0], p_fp[FIN_FILE]);
putc(format[1], p_fp[FIN_FILE]);
if(format[3] == '/')
{
putc('0', p_fp[FIN_FILE]);
putc(format[2], p_fp[FIN_FILE]);
putc(format[3], p_fp[FIN_FILE]);
putc(format[4], p_fp[FIN_FILE]);
putc(format[5], p_fp[FIN_FILE]);
putc(format[6], p_fp[FIN_FILE]);
putc(format[7], p_fp[FIN_FILE]);
}
else
{
putc(format[2], p_fp[FIN_FILE]);
putc(format[3], p_fp[FIN_FILE]);
putc(format[4], p_fp[FIN_FILE]);
putc(format[5], p_fp[FIN_FILE]);
putc(format[6], p_fp[FIN_FILE]);
putc(format[7], p_fp[FIN_FILE]);
putc(format[8], p_fp[FIN_FILE]);
}
}
else if(format[2] == '/' && format[4] == '/')
{
putc(format[0], p_fp[FIN_FILE]);
putc(format[1], p_fp[FIN_FILE]);
putc(format[2], p_fp[FIN_FILE]);
putc('0', p_fp[FIN_FILE]);
putc(format[3], p_fp[FIN_FILE]);
putc(format[4], p_fp[FIN_FILE]);
putc(format[5], p_fp[FIN_FILE]);
putc(format[6], p_fp[FIN_FILE]);
putc(format[7], p_fp[FIN_FILE]);
putc(format[8], p_fp[FIN_FILE]);
}
else
{
putc(format[0], p_fp[FIN_FILE]);
putc(format[1], p_fp[FIN_FILE]);
putc(format[2], p_fp[FIN_FILE]);
putc(format[3], p_fp[FIN_FILE]);
putc(format[4], p_fp[FIN_FILE]);
putc(format[5], p_fp[FIN_FILE]);
putc(format[6], p_fp[FIN_FILE]);
putc(format[7], p_fp[FIN_FILE]);
putc(format[8], p_fp[FIN_FILE]);
putc(format[9], p_fp[FIN_FILE]);
}
/* remove the time component */
c = getc(p_fp[OUT_FILE]);
c = getc(p_fp[OUT_FILE]);
c = getc(p_fp[OUT_FILE]);
c = getc(p_fp[OUT_FILE]);
c = getc(p_fp[OUT_FILE]);
c = getc(p_fp[OUT_FILE]);
c = getc(p_fp[OUT_FILE]);
c = getc(p_fp[OUT_FILE]);
/* remove the semi-colon */
c = getc(p_fp[OUT_FILE]);
/* put the last character back */
putc(c, p_fp[FIN_FILE]);
c = getc(p_fp[OUT_FILE]);
}
else /* date is null */
{
putc(c, p_fp[FIN_FILE]);
c = getc(p_fp[OUT_FILE]);
}
return(c);
}
it is working without error and reasonably quickly, but I was wondering if you would do it differently,
comments welcome,
tia,