标题:新手,因为完全做不来习题,干脆抄答案找茬。
取消只看楼主
bxe
Rank: 1
等 级:新手上路
帖 子:57
专家分:7
注 册:2019-3-21
结帖率:72.22%
 问题点数:0 回复次数:0 
新手,因为完全做不来习题,干脆抄答案找茬。
程序代码:
//
#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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-494296-1-1.html




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

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