程序一:strcpy函数的实现
解法一:数组实现版本
void strcpy(cahr *s, char *t)
{
int i;
i = 0;
while ( (s[i]=t[i]) != '\0')
i++;
}
解法二:指针实现的几个版本
void strcpy(cahr *s, char *t)
{
while ( (*s=*t) != '\0')
{
s++;
t++;
}
}
/*经验丰富的程序员会这样写*/
void strcpy(cahr *s, char *t)
{
while ( (*s++ = *t++) != '\0');
}
void strcpy(char *s, char *t)
{
while (*s++ = *t++);
}
程序二:strcmp函数的实现
解法一:数组版本
int strcmp(char *s, char *t)
{
int i;
for (i=0; s[i]==t[i]; i++)
if (s[i] == '\0')
return 0;
return s[i] - t[i];
}
解法二:指针版本
int strcmp(char *s, char *p)
{
for ( ; *s==*t; s++, t++)
if (*s == '\0')
return 0;
return *s - *t;
}
程序三:strcat函数的实现,函数strcat(s,t)将t指向的字符串复制到s指向的字符串的尾部
解法一:
void my_strcat(char *s, char *t)
{
while (*s++);
s--;
while (*s++ = *t++);
}
下面是测试程序:
int main(void)
{
char testbuff[128];
char *test[] =
{
"",
"1",
"12",
"123",
"1234"
};
size_t numtests = sizeof test / sizeof test[0];
size_t thistest;
size_t inner;
for(thistest = 0; thistest < numtests; thistest++)
{
for(inner = 0; inner < numtests; inner++)
{
strcpy(testbuff, test[thistest]);
strcat(testbuff, test[inner]);
printf("[%s] + [%s] = [%s]\n", test[thistest], test[inner], testbuff);
}
}
return 0;
}