一些实用的小函数

170 阅读1分钟

1、将月 日减一 例如如下格式:2019-07-08

static INT32 _DOVAMTV_DateSubtract(char *time) { if(time==NULL) { return -1; } //data_time //2019-07-08 char *temp_day = NULL; char *temp_mon = NULL; //char *temp_year = NULL; char tmp_mon[5]; int d_day = 0; int d_mon = 0; temp_day = time+8; d_day = atoi(temp_day); d_day=d_day-1; if(d_day<0) { temp_mon = tmp_mon; *temp_mon = *(time+5); *(temp_mon+1) = *(time+6); *(temp_mon+2) = '\0'; d_mon = atoi(tmp_mon); d_mon = d_mon-1; switch(d_mon){ case 1: case 3: case 5: case 7: case 8: case 10: d_day = 31; break; case 2: d_day = 28; break; case 4: case 6: case 9: case 11: d_day = 30; break; default: break; } if(d_mon>9) myitoa(d_mon,time+5,10); else if(d_mon==9) { *(time+5) = '0'; myitoa(d_mon,time+6,10); } else myitoa(d_mon,time+6,10);

}
myitoa(d_day,time+8,10);
return 0;

}

2、更换特殊的字符 static struct { const char* before; const char* after; }stSpecString[SPEC_STR_MAX]= { {"'", "'"}, {""", """}, {"&", "&"}, {"", ""}, {"", ""}, {"…", " "}, };

#define VM_ASSERT(a)
{
if(!(a))
{
printf("\n[%s][%d]:Data is NULL!\n",FUNCTION,LINE);
return -1;
}
}

static int _escape_special_str(char inbuf) { vimeo_parser_printf("\n"); char pStart = NULL; char tmp[VIMEO_TITLE_MAX_LEN] = {0}; int len = 0; int i = 0;

VM_ASSERT(inbuf);

for(; i < SPEC_STR_MAX; i++)	
{	
	pStart = strstr(inbuf, stSpecString[i].before);
	while(pStart != NULL)
	{
		len = strlen(stSpecString[i].before);
		
		if(*(pStart+len) == '\0')
		{
			sprintf(tmp, "%s", stSpecString[i].after);
		}
		else
		{
			sprintf(tmp, "%s%s", stSpecString[i].after, pStart+len);
		}
		
		strcpy(pStart, tmp);
		pStart = strstr(inbuf, stSpecString[i].before);
		
	}
}

return 0;

}

//////////////////////////////////////////////////////////////////////////////////////////

3、大写转小写,小写转大写 大写转小写: static void ChangeCase_locasetoupcase(char *Src_s, char *Dest_s) { char *p = NULL; char *dest = NULL; //int i = 0; p = Src_s; dest = Dest_s;

while(*p!='\0')
{
	if((*p<'A') || (*p>'Z'))
	{
		*dest++=*p++;
		continue;
	}
	*dest = *p+('a'-'A');
	dest++;
	p++;
}
*dest = '\0';
printf("Src_s: %s \ndest: %s\n\n", Src_s, dest);

}

小写转大写: static void ChangeCase_upcasetolocase(char *Src_s, char *Dest_s) { char *p = NULL; char *dest = NULL; //int i = 0; p = Src_s; dest = Dest_s;

while(*p!='\0')
{
	if((*p<'a') || (*p>'z'))
	{
		*dest++=*p++;
		continue;
	}
	*dest = *p-('a'-'A');
	dest++;
	p++;
}
*dest = '\0';
printf("Src_s: %s \ndest: %s\n\n", Src_s, dest);

}

4、itoa的实现过程,int类型转char类型 void my_itoa(int i, char *string) { int power = 0, j = 0;

j = i;
for (power = 1; j>10; j /= 10)
	power *= 10;

for (; power>0; power /= 10)
{
	*string++ = '0' + i / power;
	i %= power;
}
*string = '\0';

}