www.pudn.com > 日期、菜单、字符串的C函数.rar > CVTDATE.C


/*                     *** cvtdate.c ***                             */ 
/*                                                                   */ 
/* IBM - PC microsoft "C"                                            */ 
/*                                                                   */ 
/* Function to check and convert a "packed" gregorian date (1/1/83)  */ 
/* into its "expanded" form (01/01/83).  Will return a 0 if success- */ 
/* ful or a -1 if unable to convert gregorian date received.         */ 
/*                                                                   */ 
/* WARNING - if indate has not been declared at least 9 characters a */ 
/*           memory overwrite will occure.                           */ 
/*                                                                   */ 
/* Written by L. Cuthbertson, March 1984.                            */ 
/*                                                                   */ 
/*********************************************************************/ 
/*                                                                   */ 
 
#include  
 
int cvtdate(indate) 
char indate[]; 
{ 
	char hold[9]; 
	int i; 
 
	i = 0;		/* position within indate */ 
 
	/* get month */ 
	if (isdigit(indate[i])) 
		if (isdigit(indate[i+1])) { 
			hold[0] = indate[i++]; 
			hold[1] = indate[i++]; 
		} else { 
			hold[0] = '0'; 
			hold[1] = indate[i++]; 
		} 
	else 
		return(-1); 
 
	/* insert slash */ 
	if (isdigit(indate[i++])) 
		return(-1); 
	else 
		hold[2] = '/'; 
 
	/* get day */ 
	if (isdigit(indate[i])) 
		if (isdigit(indate[i+1])) { 
			hold[3] = indate[i++]; 
			hold[4] = indate[i++]; 
		} else { 
			hold[3] = '0'; 
			hold[4] = indate[i++]; 
		} 
	else 
		return(-1); 
 
	/* insert slash */ 
	if (isdigit(indate[i++])) 
		return(-1); 
	else 
		hold[5] = '/'; 
 
	/* get year */ 
	if (isdigit(indate[i])) 
		if (isdigit(indate[i+1])) { 
			hold[6] = indate[i++]; 
			hold[7] = indate[i++]; 
		} else { 
			hold[6] = '0'; 
			hold[7] = indate[i++]; 
		} 
	else 
		return(-1); 
 
	/* insert null terminator */ 
	if (indate[i] != '\0') 
		return(-1); 
	else 
		hold[8] = '\0'; 
 
	/* copy hold into indate */ 
	strcpy(indate,hold); 
 
	/* done */ 
	return(0); 
}