emmm… 很久以前写的,现在发表出来
将a字符串中的所有b字符串替换成c字符串的函数如下:
void strReplace(char a[], char b[], char c[])
{
int i, locate = 0, len1 = 0, len2 = 0, len3 = 0, flag;
while (b[len2++]); len2--;//获取字符串长度
while (c[len3++]); len3--;
while (a[locate])
{
flag = 1;
for (i = 0; i < len2; i++)
{
if (a[locate + i] != b[i])
{
flag = 0;
break;
}
}
if (flag == 1)
{
while (a[len1++] != 0); len1--;
if (len3 - len2 >= 0)
{
for (i = len1 - 1; i > locate; i--)
{
a[i + len3 - len2] = a[i];
}
}
else
{
for (i = locate + len2; i < len1; i++)
{
a[i + len2 - len3] = a[i];
}
}
a[len1 - len2 + len3] = 0;
for (i = 0; i < len3; i++)
{
a[locate + i] = c[i];
}
locate += len3;
}
else
{
locate++;
}
}
}
strcat函数如下:
void strcat(char *p, char *q)
{
while (*p)
{
p++;
}
while (*q)
{
*(p++) = *(q++);
}
*p = 0;
}
查找并返回第二个字符串在第一个字符串的位置的函数如下:
int strAt(char *s, char *t)
{
int i = 0, j = 0, flag = 0, k;
char *p = NULL;
while (*(s + i))
{
i++;
}
while (*(t + j))
j++;
for (k = 0; k <= i - j; k++)
{
p = s + k;
flag = 1;
for (int l = 0; l < j; l++)
{
if (*p != *(t + l))
{
flag = 0;
break;
}
p++;
}
if (flag == 1)
break;
}
if (flag == 1)
return k + 1;
return -1;
}