二级指针动态数组,模拟指针数组

二级指针动态数组,模拟指针数组

创建二级指针动态数组,模拟指针数组。里面存放键盘输入的字符串,回车键确定输入,-1为退出条件。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
    char **p = NULL;
    char **prev = NULL;
    int count = 0;
    char buf[1024] = {
   0};
    int i;
    int val;

    while (1) {
        printf("input string\n");
        scanf("%s", buf);

        if (!strncmp("-1",buf, 2))
            break;

        prev = p;
        p = (char **)malloc((count + 1) *sizeof(char *));
        if (NULL == p) {
            free(prev);
            val = -1;
            goto err1;
        }
        memcpy(p, prev, count * sizeof(char *));
        free(prev);

        p[count] = (char *)malloc(strlen(buf) + 1);
        if (NULL == p[count]) {
            val = -1;
            goto err2;
        }

        memcpy(p[count], buf, strlen(buf) + 1);

        count++;
    }
    val = 0;
    for(i = 0; i < count; i++)
        printf("p[%d] =  %s\n", i, p[i]);

err2:
    free(p);

err1:    
    for(i = 0; i < count; i++)
        free(p[i]);

    return val;
}

转载于:https://www.cnblogs.com/zu-ji/archive/2012/07/03/2574794.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/110375.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JavaScript数组遍历6 some方法

    JavaScript数组遍历6 some方法上一篇文章我们讲述了every方法,这里我们将会进行讲解some方法和every方法相似some方法也接收2个参数;第一个参数是一个函数第二个参数是一个传入值。其中第一个参数接收3个参数第一个参数是当前值,第二个参数是当前值的索引值,第三个参数是本数组。some方法的使用和every的方法相似但是也有一个返回值,返回当前的数组是否有符合的条件。如果没有返回值,则返回的是undefined。当有一个值满足条件则会停止遍历。下面是使用some方法的例子。<!DOCTYPEhtml><

    2022年10月20日
  • 用最简单的一个例子看maven冲突的解决办法

    用最简单的一个例子看maven冲突的解决办法

    2020年11月20日
  • MySql5.7 配置文件 my.cnf 设置

    MySql5.7 配置文件 my.cnf 设置

    2021年10月27日
  • 算法学习网站推荐

    算法学习网站推荐博主最近在学算法,看了很多不错的文章,顺便推荐几个写的不错的网站~我会慢慢更新1、基础算法学习清单~2、基础的数据结构!3、杂七杂八的算法学习~(这位博主写的东西很杂但是还是不错的)4、ACM习题!5、约瑟夫环问题~(简单的问题也有非常巧妙的解法,这位博主改的一个优化算法非常有意思)6.、A*算法7、LeetCode(这个应该大家都知道,刷题网站)8、我个人g…

    2022年6月19日
  • Camera 之水波纹和banding现象[通俗易懂]

    Camera 之水波纹和banding现象[通俗易懂]预览画面中出现了一条明一条暗相间隔的竖条纹,这种现象叫做“水波纹”,并对原因进行了讲解,现记录如下。其实这些“水波纹”产生是因为手机的快门频率与灯光的频率不匹配导致的。首先,我们都知道手机拍照的时候都是有一定曝光时间的,例如假设手机的快门频率为50Hz,则其拍照时的曝光时间就是20ms。同理,屏幕或者日光灯不是一直在发光的,而是更隔一段时间就会刷新一次,我们生活中的日光灯为50Hz,国外的是60Hz。例如那个50Hz,就代表每秒刷新50次,因为刷…

    2022年10月13日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号