标题:动态内存分配的问题
只看楼主
captain2050
Rank: 2
等 级:论坛游民
帖 子:57
专家分:43
注 册:2016-7-15
结帖率:92.86%
已结贴  问题点数:10 回复次数:3 
动态内存分配的问题
输入任意句话,保存到动态分配的内存中,然后按字数从短到长输出。
但无法输出?
我用的是linux,那个setbuf是用来清空输入缓冲区的。

程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>

int main()
{
    char** p_pointers=NULL;
    int count=0;
    int capacity=0;
    char conti;
    char* temp=NULL;
   

    do
    {
        if(count==capacity)
        {
            capacity+=5;
            p_pointers=realloc(p_pointers,(capacity)*sizeof(char*));
        }
        *(p_pointers+count)=malloc(100*sizeof(char));
        setbuf(stdin,NULL);
        scanf("%s",*(p_pointers+count));
           

            printf("Do you want to continue?( y or N )");
            setbuf(stdin,NULL);
            scanf("%c",&conti);
    }while(tolower(conti)=='y');
   

    for(int i=0;i<=count-2;i++)
        for(int j=i+1;j<=count-1;j++)
            if(strlen(*(p_pointers+i))>strlen(*(p_pointers+j)))
            {
                temp=*(p_pointers+i);
                *(p_pointers+i)=*(p_pointers+j);
                *(p_pointers+j)=temp;
            }
   

    for(int i=0;i<=count-1;i++)
        printf("%s\n",*(p_pointers+i));
    free(p_pointers);
}






搜索更多相关主题的帖子: linux 缓冲区 color 动态 
2016-11-18 16:21
EdmundDantes
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:62
专家分:173
注 册:2016-11-9
得分:10 
你的count一直是0,在do{}while循环里你没有给count做增量,所以for 循环 i = count = 0,for循环永远不工作
2016-11-18 17:15
EdmundDantes
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:62
专家分:173
注 册:2016-11-9
得分:0 
你的排序也有一点问题,再仔细做一遍吧
2016-11-18 17:16
EdmundDantes
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:62
专家分:173
注 册:2016-11-9
得分:0 
释放也不对,你只是释放了char**,没有释放char*的内存
2016-11-18 17:20



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




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

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