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

这是我的源程序,作用是输入字符串,然后排序。#include<stdio.h>#include<string.h>voidpaixu(char(*p)[30]){inti... 这是我的源程序,作用是输入字符串,然后排序。
#include<stdio.h>
#include<string.h>

void paixu(char(*p)[30])
{
int i,j,k;
char *q;
for(i=0;i<9;i++)
{k=i;
for(j=i+1;j<10;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];
int i;
for(i=0;i<3;i++)
scanf("%s",a[i]);
paixu(a);
for(i=0;i<3;i++)
printf("%f",a[i]);
system("pause");
}

我在Dev上运行的,编译的时候不提示有错误,运行时输入三个字符串后未排序就自动关闭程序,请问这是错在哪里?
展开
 我来答
4nil
2011-03-23 · TA获得超过140个赞
知道答主
回答量:51
采纳率:0%
帮助的人:32.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");
}
百度网友39e8ec07b
2011-03-23
知道答主
回答量:39
采纳率:0%
帮助的人:19.3万
展开全部
数组a说明的维数是3,而paixu用到的p的维数是9,数组溢出了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式