| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 787 人关注过本帖
标题:[求助]字符串排序为什么会出错
只看楼主 加入收藏
bob7789
Rank: 1
等 级:新手上路
帖 子:132
专家分:0
注 册:2006-4-10
收藏
 问题点数:0 回复次数:10 
[求助]字符串排序为什么会出错

就是要将里面的5个字符串排序,不知道自己错在什么地方了.
#include <stdio.h>
#include <string.h>
#define MAX 5
void sort(char *[],int);

void main()
{
char *string[MAX]={"qingdao xx","tai wang qq","wqfdw jj","anarefafda","cccirjfda"};
int i;
sort(string,MAX);
}

void sort(char *p[],int x)
{
int i,j;
char *dummy;
if(strcmp(p[0],p[1])<0)
{
strcpy(dummy,p[0]);
strcpy(p[0],p[1]);
strcpy(p[1],dummy);
}

for(i=1;i<x;i++)
{
for(j=1;j<=x-1;j++)
{
if(strcmp(*(p+j+1),*(p+j))>0)
{
strcpy(dummy,*(p+j));
strcpy(*(p+j),*p);
strcpy(*p,dummy);
}
}
}
printf("\n按字母排列如下\n\n");
for(i=0;i<x;i++)
printf("%s\n",*(p+i));
}

搜索更多相关主题的帖子: 字符 
2006-05-18 16:14
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
char *string[MAX]={"qingdao xx","tai wang qq","wqfdw jj","anarefafda","cccirjfda"};


我没往下看,这句就错了

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-18 16:15
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 

这个没错


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2006-05-18 16:18
bob7789
Rank: 1
等 级:新手上路
帖 子:132
专家分:0
注 册:2006-4-10
收藏
得分:0 
那里怎么错了?我是定义了一个指针类型的字符数组!~~
2006-05-18 16:18
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
老大,你给我点面子吧

指针定义的不是字符串常量吗?它无法排序啊

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-18 16:19
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
以下是引用bob7789在2006-5-18 16:14:00的发言:

就是要将里面的5个字符串排序,不知道自己错在什么地方了.
#include <stdio.h>
#include <string.h>
#define MAX 5
void sort(char *[],int);

void main()
{
char *string[MAX]={"qingdao xx","tai wang qq","wqfdw jj","anarefafda","cccirjfda"};
int i;
sort(string,MAX);
}

void sort(char *p[],int x)
{
int i,j;
char *dummy;
if(strcmp(p[0],p[1])<0)
{
strcpy(dummy,p[0]);
strcpy(p[0],p[1]);
strcpy(p[1],dummy);
}

for(i=1;i<x;i++)
{
for(j=1;j<=x-1;j++)
{
if(strcmp(*(p+j+1),*(p+j))>0)
{
strcpy(dummy,*(p+j));
strcpy(*(p+j),*p);
strcpy(*p,dummy);
}
}
}
printf("\n按字母排列如下\n\n");
for(i=0;i<x;i++)
printf("%s\n",*(p+i));
}

注意:char *dummy; 只是“光杆司令”。

不能用它来储存字符串这样的“实体”

稍后,给你发一个不同思路的代码。


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-18 16:22
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
用数组吧

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-18 16:24
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 

#include <stdio.h>
#include <string.h>
#define MAX 5
void sort(char*[],int);

void main()
{
char*string[MAX]=
{"qingdao xx","tai wang qq","wqfdw jj","anarefafda","cccirjfda"};
int i;

sort(string,MAX);

printf("\n按字母排列如下\n\n");
for(i=0;i<MAX;i++)
printf("%s\n",*(string+i));
printf("\n");

}

void sort(char *p[],int x) //基本原理:比较、交换指针数组元素储存的串首地址
{
int i,j;
char *dummy;

for(i=1;i<x;i++)

for(j=1;j<=x-i;j++)

if(strcmp(*(p+j-1),*(p+j))>0)
{
dummy=*(p+j);
*(p+j)=*(p+j-1);
*(p+j-1)=dummy;
}

}


[此贴子已经被作者于2006-5-18 16:35:26编辑过]


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-18 16:33
bob7789
Rank: 1
等 级:新手上路
帖 子:132
专家分:0
注 册:2006-4-10
收藏
得分:0 

谢谢!~~~太谢谢各位了!~~~~~~
2006-05-18 16:35
bob7789
Rank: 1
等 级:新手上路
帖 子:132
专家分:0
注 册:2006-4-10
收藏
得分:0 
刚才试了,没有问题了!~~谢谢指点,我对指针的认识不够!努力,努力~~
谢谢"–★–"
2006-05-18 16:47
快速回复:[求助]字符串排序为什么会出错
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033990 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved