一道字符串排序的题,大家帮忙看看问题出在哪?
升序排序
#include<stdio.h>
#include<string.h>
void main()
{
char *bname[4];
printf("scanf 4\n");
int x;
for(x=0;x<4;x++)
scanf("%s",bname[x]); /* 这里输入字符串后,发生异常,然后就退出了 */
int i,m;
void sort(char *name[],int);
m=sizeof(bname)/sizeof(char *);
sort(bname,m);
printf("\n");
for(i=0;i<m;i++)
printf("%s\n",bname[i]);
}
void sort(char *name[],int n)
{
char *t;
int i,j,k;
for(i=0;i<n;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(strcmp(name[i],name[j])>0)
{
t=name[i];
name[i]=name[j];
name[j]=t;
}
}
}
}
问题点数:50、回复次数:4Top
1 楼UPCC(杂食动物)回复于 2006-07-03 21:13:53 得分 25
char *bname[4];
-----------------
然后还要分配空间
for(int i=0; i<4; i++)
bname[i] = (char*)malloc(sizeof(char)*N);//N就字符串最大值,自己设置
Top
2 楼nightfox(马可菠萝)回复于 2006-07-03 21:16:31 得分 25
for(x=0;x<4;x++)
scanf("%s",bname[x]);
这几个指针没有指向实际的空间.
你应该先为它们开辟实际的空间.
再给它们输入值.Top
3 楼UPCC(杂食动物)回复于 2006-07-03 21:17:27 得分 0
m=sizeof(bname)/sizeof(char *);//这个肯定是4啊。
k=i;//这个没有作用,浪费了Top
4 楼nysst_hxl()回复于 2006-07-03 21:22:56 得分 0
多谢各位了,我刚才也估计是没有分配空间的原因,但是吃不准,所以来问一下。
因为刚才我在定义数组是就给了四个字符串来初始化,然后问题就解决了
哈哈,揭贴了
你们俩这下赚翻了
每人25分Top




