C语言利用malloc函数开辟动态存储单元,顺序存放输入的5个字符串,然后按从小到大的顺序输出这5个字符串

(已自己解决,请看题目后面贴的代码)【贴上代码就当帮助别人吧】请编写程序,利用malloc函数开辟动态存储单元,顺序存放输入的5个字符串,然后按从小到大的顺序输出这5个字... (已自己解决,请看题目后面贴的代码)【贴上代码就当帮助别人吧】请编写程序,利用malloc函数开辟动态存储单元,顺序存放输入的5个字符串,然后按从小到大的顺序输出这5个字符串(C语言)。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 5
int main()
{
int i,max;
char (*p)[256];
p=(char(*)[256])malloc(N*(256*sizeof(char*)));
for(i=0;i<N;i++)
gets(p[i]);
max=0;
for(i=1;i<N;i++)
if(strcmp(p[i],p[max])>0) max=i;
puts(p[max]);
return 0;
}
展开
 我来答
紫薇命free
2019-04-21 · TA获得超过3350个赞
知道大有可为答主
回答量:5881
采纳率:2%
帮助的人:289万
展开全部
一般的做法是把malloc和free包装以后使用,再加入适当的调试代码。可以参考:编写无错的C程序的秘诀的电子版。比如:free(p)包装一个函数: void Free(void *p) { if (p != NULL) { free(p); p = NULL; } } 至于malloc,一般的做法是分配size个字节的内存时,多分配一个调试用的结构体,然后把这些结构体做成链表,可以通过查看这个链表找到野指针。
itunes0004
2019-04-22 · TA获得超过4045个赞
知道大有可为答主
回答量:2685
采纳率:69%
帮助的人:529万
展开全部
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 5
int main()
{
    int i,max;
    char *p[N];
    for(int i = 0; i < N; ++i) {  // 申请内存
        p[i] = (char *)(malloc(256 * sizeof(char)));
    }
    for(i=0;i<N;i++) // 输入
        gets(p[i]);
    for(i=0;i<N;i++){ // 排序
        for(int j = i + 1; j < N; ++j) {
            if(strcmp(p[i], p[j]) > 0) {
                char *t = p[i];
                p[i] = p[j];
                p[j] = t;
            }
        }
    }
    for(i=0;i<N;i++)  // 输出
        puts(p[i]);
    return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
weijiweiji4
2019-04-21 · 超过20用户采纳过TA的回答
知道答主
回答量:460
采纳率:25%
帮助的人:13.1万
展开全部
计分即可爸爸靠
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式