| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 278 人关注过本帖
标题:求高人指点,哪里出错了,怎么调试呢
只看楼主 加入收藏
impaler
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-6-12
结帖率:40%
收藏
 问题点数:0 回复次数:6 
求高人指点,哪里出错了,怎么调试呢
#include<stdio.h>
#include<string.h>
#include<stdlib.h>



void AlphaSort(char *array[],int size)
{
    //char abx[4];
    //char *temp=(char*)malloc(sizeof(char)*100);
    char *temp;
    int i,j,c;
    for(j=0;j<size;j++)
    {
        for(i=0;i<j;i++)
        {
            if(strcmp(array[i],array[i+1])>0)
            {
                strcpy(temp,array[i]);
                strcpy(array[i],array[i+1]);
                strcpy(array[i+1],temp);
            }
        }
    }
    for(c=0;c<size;c++)
        printf("%s\n",array[c]);
}
int main(){
    char *ab[]={"fuck","ding","li","yuan"};
    AlphaSort(ab,4);
}
搜索更多相关主题的帖子: include 
2014-03-29 00:27
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
temp指针没有指向具体空间,strcpy执行出错


[fly]存在即是合理[/fly]
2014-03-29 01:25
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
改为:
char *temp;
temp=(char*)malloc(sizeof(char)*100);
就可以了。
2014-03-29 06:33
impaler
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-6-12
收藏
得分:0 
回复 3楼 ying8501
我改了不行啊,
程度不提示temp没有初始化了,但是直接出错。为什么呢?
是我环境有问题吗
2014-03-29 07:25
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
两种改法:
1)是改为2维数组来存多个字符串,交换字符串的存储位置,如下程序
2)仍用指针数组,指向多个字符串,但是仅交换字符串的首地址。


include<stdio.h>
#include<string.h>
#include<stdlib.h>
void AlphaSort(char array[][10],int size)
{
    //char abx[4];
    char *temp=(char*)malloc(sizeof(char)*100);
    //char temp[100];
    int i,j;
    //temp=(char*)malloc(sizeof(char)*100);
    for(j=0;j<size-1;j++)
    {
        for(i=0;i<j;i++)
        {
            if(strcmp(array[i],array[i+1])>0)
            {
                strcpy(temp,array[i]);
                strcpy(array[i],array[i+1]);
                strcpy(array[i+1],temp);
            }
        }
    }
    for(i=0;i<size;i++)
        printf("%s\n",array[i]);
}
int main(){
    char ab[4][10]={"fuck","ding","li","yuan"};
    AlphaSort(ab,4);
    return 0;
}
2014-03-29 07:44
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
仍用指针数组,指向多个字符串,但是仅交换字符串的首地址。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void AlphaSort(char *array[],int size)
{

    char *temp;

    int i,j;

    for(j=0;j<size-1;j++)
    {
        for(i=0;i<j;i++)
        {
            if(strcmp(array[i],array[i+1])>0)
            {
                temp=array[i];
                array[i]=array[i+1];
                array[i+1]=temp;
            }
        }
    }
    for(i=0;i<size;i++)
        printf("%s\n",array[i]);
}
int main(){
    char *ab[]={"fuck","ding","li","yuan"};
    AlphaSort(ab,4);
    return 0;
}
2014-03-29 07:47
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
如果字符串不是输入的话,提倡用第二种方法。
另外,你最初的程序出错是因为:这种直接给指针数组赋初值的方法,字符串是存放在常量区,不允许改变它的值。所以当你交换两个串的位置时,就会出错。

[ 本帖最后由 ying8501 于 2014-3-29 08:08 编辑 ]
2014-03-29 08:04
快速回复:求高人指点,哪里出错了,怎么调试呢
数据加载中...
 
   



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

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