各位大神帮忙看看这个strcpy那里出问题啦

#include //20.用指向指针的指针的方法对5个字符串排序并输出
void main()

{
char ch[5]={"abcd\0","bcde\0","cdef\0","defg\0","efgh\0"};
char p2[10];
char **p;
int i,j;
p=ch;
for(i=0;i<5;i++)
{
for(j=i+1;j<5;j++)
{
if(strcmp(
(p+i),*(p+j))>0);
{
** strcpy(p2,*(p+i));
strcpy(*(p+i),*(p+j));
strcpy(*(p+j),p2); **
}
}
}
for(i=0;i<5;i++)
printf("%s\n",*(p+i));
}

0x0ff8d2e9 (msvcr100d.dll) 处有未经处理的异常: 0xC0000005: 写入位置 0x00f95810 时发生访问冲突

调试的时候出来这个错误

图片说明

大神们 给新人一点指点吧

strcpy的第一个参数是const char * 类型的指针,你这里*(p+i),*(p+j)都是char *。