两个字符串,s,t把t字符串插入到s字符串中,s字符串有足够的空间存放t字符串
void insert( char* s, char* t)
{
char* s_temp=s;
char* t_temp=t;
while(*s_temp!='\0')
s_temp++;
while(*t_temp!='\0')
{
*s_temp=*t_temp;
t_temp++;
s_temp++;
}
*s_temp='\0';
}
又或者直接用memcpy函数
void *memcpy(void *dest, const void *src, size_t n);
从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中
int sprintf( char *buffer, const char *format, [ argument] … ); //字符串格式化函数
buffer:char型指针,指向将要写入的字符串的缓冲区。
format:格式化字符串。
[argument]...:可选参数,可以是任何类型的数据
strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。
char* lcs(char *str1,char *str2)
{
int len1,len2;
int i,j;
char *shorter,*longer,*substr;
if(str1 == NULL || str2 ==NULL)return NULL;
len1 = strlen(str1);
len2 = strlen(str2);
if(len1 < len2)
{
shorter = str1;
longer = str2;
}
else
{
shorter = str2;
longer = str1;
}
if(strstr(longer,shorter) != NULL) return shorter;
len1 = strlen(shorter);
substr = (char*)malloc(len1 + 1);
for(i = len1 - 1; i > 0;i--)
{
for(j = 0; j <= len1 - i; j++)
{
memcpy(substr,&shorter[j],i);
substr[i] ='\0';
if(strstr(longer,substr) != NULL) return substr;
}
}
return NULL;
}