| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1002 人关注过本帖
标题:新手,因为完全做不来习题,干脆抄答案找茬。
只看楼主 加入收藏
bxe
Rank: 1
等 级:新手上路
帖 子:57
专家分:7
注 册:2019-3-21
结帖率:72.22%
收藏
 问题点数:0 回复次数:1 
新手,因为完全做不来习题,干脆抄答案找茬。
程序代码:
//
#include <stdio.h>
#include <stdlib.h>

#include <string.h> /*strlen()*/

int main(void)
{
    char **pStr = NULL;
    char *pBuffer = NULL;
    int count = 0;

    pStr = malloc(sizeof(char *));

    do
    {
        pBuffer = malloc(100 * sizeof(char));
        gets(pBuffer);
        count++;
        pStr = realloc(pStr,count * sizeof(char*));
        *(pStr + count - 1) = pBuffer;
    }while(strlen(pBuffer) !=0 );

    for(int i=0; i<count-2; i++) /*-2很难理解啊*/
    {
        for(int j=0; j<count-2-i; j++)/*不减无所谓吧*/
        {
            if(strlen(*(pStr+j)) > strlen(*(pStr+j+1)))
            {
                pBuffer = *(pStr+j);
                *(pStr+j) = *(pStr+j+1);
                *(pStr+j+1) = pBuffer;
            }
        }
    }

    for(int i=0; i<count-1; i++)
    {
        printf("%s\n",*(pStr+i));
    }
    free(pStr);
    return 0;
}
习题7.2 编写一个程序,从键盘读入任意个谚语,并将它们存储到执行期间分配的内存中。然后,将它们以字长顺序由短到长地输出。
疑问:1,在for循环中,用于计数出现了两次 -2 ,其实不减也没问题吧?
2,free(Str) 是自行添加的,原文没有写,释放内存这样就可以了么?
3,原作者的书写方式,在写符号时,如 “1 + 1”,这样留出空格,是个人习惯,还是有合理的意义?

预谢



[此贴子已经被作者于2019-4-19 22:25编辑过]

搜索更多相关主题的帖子: strlen int char count for 
2019-04-19 22:20
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
1,在for循环中,用于计数出现了两次 -2 ,其实不减也没问题吧?
下标越界
2,free(Str) 是自行添加的,原文没有写,释放内存这样就可以了么?
是的
3,原作者的书写方式,在写符号时,如 “1 + 1”,这样留出空格,是个人习惯,还是有合理的意义?
一些常见的规范写法

剑栈风樯各苦辛,别时冰雪到时春
2019-04-19 22:39
快速回复:新手,因为完全做不来习题,干脆抄答案找茬。
数据加载中...
 
   



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

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