| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 891 人关注过本帖
标题:天哪,实在想不懂哪错了,要抓狂了
只看楼主 加入收藏
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
结帖率:97.22%
收藏
已结贴  问题点数:30 回复次数:11 
天哪,实在想不懂哪错了,要抓狂了
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>
#define A 128
#define B 50

bool str_in(char **p);
void str_pai(char*p[],int n);
void str_lie(char **p1,char **p2);
void str_out(char*p[],int n);

int main(void)
{
    int count=0;
    char *pS[B]={NULL};
    printf("请输入文本:\n\n");
    for(count=0;count<B;count++)
    if(!str_in(&pS[count]))
        break;
    str_pai( pS,count);
    str_out( pS,count);
    return 0;
}
bool str_in(char **p)
{
    char buffer[A];
    if(gets(buffer)==NULL)
    {
        printf("读取失败\n");
        exit(1);
    }
    if(buffer[0]=='\0')
        return false;
    *p=(char*)malloc(strlen(buffer)+1);
    if(*p==NULL)
    {
        printf("内存失败,程序终止\n");
        exit(1);
    }
    strcpy(*p,buffer);
    return true;
}

void str_pai( char *p[],int n)
{
    int i=0;
    bool answer=false;
    while(!answer)
    {
       answer=true;
       for(i=0;i<n;i++)
       {
           if(strlen(p[i])<strlen(p[i+1]))
           {
              str_lie(&p[i],&p[i+1]);
              answer=false;
           }
       }
    }
}

void str_lie(char **p1,char **p2)
{
    char *pt=*p1;
        *p1=*p2;
        *p2=pt;
}

void str_out(char *p[],int n)
{
    int i=0;
    printf("你的输出按字母顺序排列如下:\n");
    for(i=0;i<n;i++)
    {
        printf("%s\n", p[i]);
        free(p[i]);
        p[i]=NULL;
    }
}
搜索更多相关主题的帖子: void count return include 
2012-11-04 00:52
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:0 
输入完后会中断,求解啊...

I have not failed completely
2012-11-04 00:53
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:1 
没有#include <stdbool.h>这个文件 无法帮你调试

DO IT YOURSELF !
2012-11-04 07:47
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:8 
    for(count=0;count<B;count++)
{
    if(!str_in(&pS[count]))
        break;
    str_pai( pS,count);
    str_out( pS,count);
}
你忘记加大括号了?
加了不至于进程终止,但是输出仍然有问题,你自己查查,输入函数可以用的。

str_pai这个函数第二个参数有没有问题,你传入的不是字符串的长度

[ 本帖最后由 pauljames 于 2012-11-4 09:17 编辑 ]

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2012-11-04 07:53
青春无限
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江苏
等 级:贵宾
威 望:24
帖 子:3452
专家分:19340
注 册:2012-3-31
收藏
得分:1 
路过

学 会看代码…学习写程序…学会搞开发…我的目标!呵呵是不是说大话啊!!一切皆可能
2012-11-04 08:16
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:16 
怎么楼上老师蹭分,不是路过就是学习。。。。。。。
楼主的程序对我来说很高深,但是对于排错我有个方法,楼主可以在每一个循环,选择,调用时加上个printf做个记号,或者用scanf让系统暂停一下,这样你就可以很好的掌握系统在哪里出的错,然后进行有针对性的排错,比你这样找要有效果的多,只是scanf输入的值别乱放就行。
这个方法我经常用,很好用的,楼主可以试试
我是新手,说错勿怪。。。。。。。。。。。。。。。。。。。。

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-11-04 08:59
zxd543
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:内蒙古
等 级:贵宾
威 望:17
帖 子:453
专家分:2351
注 册:2012-4-12
收藏
得分:3 
貌似操作系统的程序 不明白做什么 也没法分析
如果运行没问题 输入就中断
应该是输入语句有问题 建议检查一下你的输入语句

马马虎虎 不吝赐教 我是路过蹭分滴
2012-11-04 13:03
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:1 
把代码功能贴出来


[fly]存在即是合理[/fly]
2012-11-04 13:06
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:0 
其实程序的功能很简单,就是把输入的文本由长到短输出,只不过要求用函数来做(我也在检查,好像还真查不出来啊...)

I have not failed completely
2012-11-04 14:40
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:0 
回复 6楼 yaobao
我用你的方法已经找到漏洞了,建议很不错,谢了  

I have not failed completely
2012-11-04 15:46
快速回复:天哪,实在想不懂哪错了,要抓狂了
数据加载中...
 
   



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

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