/*
写C语言的拷贝函数,要求复制字符串,并且将复制后的字符串逆序 比如from中是1234,
则to中是4321 void strcyp(char * to,const char * from)问题补充:
要求: 不能使用库函数 不能定义其他的变量。
*/
#include
#include
void strcyp(char *to, const char * from);
int main()
{
char *in = "asdf!1234+567!@#$%^&*()_+8*90?";
char *out;
int len = 1;
char *head;
head = in;
while (*head != '\0')
{
len++;
head++;
}
out = (char *)malloc(sizeof(char) * (len + 1));
strcyp(out, in);
head = in;
while (*head != '\0')
printf("%c", *head++);
printf("\n");
head = out;
while (*head != '\0')
printf("%c", *head++);
printf("\n");
delete out;
return 0;
}
void strcyp(char *to, const char * from)
{
/*特殊情况*/
if (from == NULL || *from == '\0'|| from == to)
return -1;
/*首先用to指针指向的当前位置保存from[0]*/
*to++ = *from++;
/*定位from到最后一个字符,并且置to数组其余位为-1*/
while (*from != '\0')
{
from++;
*to++ = -1;
}
from--;
*to-- = '\0';
/*然后用from内元素对所有标记为'-1'位进行填充*/
while (*to == -1)
to--;
while (*to != '\0')
*to++ = *from--;
}