c语言 程序 请高手帮忙看看错在哪里?

2024-12-22 01:04:37
推荐回答(2个)
回答1:

void paixu(char(*p)[30])
{
int i,j,k;
char q[30];// 注意这里,必须有临时存储空间
for(i=0;i<3;i++) // 注意这里,数量必须和你传入的数组大小一致,你可以用参数指定
{
k=i;
for(j=i+1;j<3;j++) // 注意这里,同上
if(strcmp(p[k],p[j])>0)
k=j;
if(k!=i)
{
strcpy(q,p[i]);
strcpy(p[i],p[k]);
strcpy(p[k],q);
}
}
}

int main()
{
char a[3][30] = {0};
int i;
for(i=0;i<3;i++)
scanf("%s",a[i]);
paixu(a);
for(i=0;i<3;i++)
printf("%s\n",a[i]);//注意这里
system("pause");
}

回答2:

数组a说明的维数是3,而paixu用到的p的维数是9,数组溢出了。