最近又在学指针,想实现strcpy函数的功能,自己写的代码傻乎乎 ,运行的时候有报错:
#include <stdio.h>
void strcpy(char* p1, char* p2)
{
while (*p1 = *p2)
{
p1++;
p2++;
}
}
int main()
{
char p1[] = "dkdf", p2[] = "modqdw"; //p1 的栈被毁坏
strcpy(p1, p2);
printf("%s\n%s", p1, p2);
}
stack around “p1” the variable was corrupted
直接翻译就是p1,我定义的一个字符指针附近的栈被破坏 。
仔细观察之后,发现p1的长度比p2的还要小! 所以强行复制过去之后,是有报错的 。
应该修改代码:
char p1[100] = "dkdf" ;//p1 指向的空间应该足够大``