| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1167 人关注过本帖
标题:动态内存分配的问题
只看楼主 加入收藏
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
快速回复:动态内存分配的问题
数据加载中...
 
   



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

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