| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 479 人关注过本帖
标题:求助一编程问题
只看楼主 加入收藏
asdfbjha
Rank: 2
等 级:论坛游民
帖 子:12
专家分:24
注 册:2010-8-10
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
求助一编程问题
/*对10个等长的字符串排序*/
#include<stdio.h>
#include<string.h>
void pai(char (*)[6]);
int main()
{
  char a[10][6],(*p)[6]=a;
  int i;
  printf("输入10个字符串\n");
  for(i=0;i<10;i++)
     gets(a[i]);
  pai(p);
  for(i=0;i<10;i++)
    {
     puts(a[i]);
     putchar('\n');
    }      
}
void pai(char (*p)[6])
{
 int i,j;
 char a[6],*p1=a;
 for(i=0;i<9;i++)
  {for(j=0;j<9-i;j++)
    {
      if(strcmp(p+j,p+j+1)>0)
      {
       strcpy(p1,p+j);
       strcpy(p+j,p+j+1);//运行到这,i和j个值被改变 ,出现段异常
       strcpy(p+j+1,p1);
      }
     }
  }      
}
dev-c++ 运行   为什么i和j的值会被改变
2010-08-10 23:40
erikyo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:270
专家分:1154
注 册:2010-6-10
收藏
得分:14 
做了一下测试,貌似可以实现排序的功能,没有问题。
不过,建议用指针数组来实现,这样可以省去字符串整体拷贝的开销。  

[ 本帖最后由 erikyo 于 2010-8-11 09:35 编辑 ]
2010-08-11 09:31
asdfbjha
Rank: 2
等 级:论坛游民
帖 子:12
专家分:24
注 册:2010-8-10
收藏
得分:0 
多谢搂上的帮助  不过我用dev-c++ 调试不能运行,出现段异常

修该
if(strcmp(p+j,p+j+1)>0)
      {
       strcpy(p1,p+j);
       strcpy(p+j,p+j+1);//运行到这,i和j个值被改变 ,出现段异常
       strcpy(p+j+1,p1);
      }
改为
if(strcmp(p[j],p[j+1])>0)
      {
       strcpy(p1,p[j]);//运行到这,i和j的值被改变,p的值也被改变
       strcpy(p[j],p[j+1]);//运行到这出现段异常
       strcpy(p[j+1],p1);
      }

 请大大帮个忙,看看是怎么回事    我用dev-c++ 调试
2010-08-11 22:35
快速回复:求助一编程问题
数据加载中...
 
   



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

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