在c语言中如何实现数组的动态输入?

 我来答
自我编程
2019-11-19 · 科技优质答主
自我编程
采纳数:1481 获赞数:4283

向TA提问 私信TA
展开全部

头文件malloc.h

使用malloc来申请一个初始地址空间。

然后在循环输入的过程中不断检查初始空间是否已满,满了就是使用realloc来扩展地址空间。

最后,如申请的地址不需要使用了,且程序没有结束,需要用free来释放。

另外,使用malloc或realloc申请时,需要先判断下返回值是否为空,如有异常申请失败,用空指针直接使用,会造成程序错误。

下面简单示范:(初始申请2个字节,之后每次输入字符扩展1个字节,回车结束输入)

#include <stdio.h>

#include <malloc.h>

int main()

{

    int len=2;

    char *a=NULL,*aSave=NULL,c;

    a=(char*)malloc(sizeof(char)*len);

    if(!a)

        return 1;

    a[0]=0;

    while(1)

    {

        c=getchar();

        if(c==10)

            break;

        if(a[0]==0)

            a[0]=c,a[1]=0;

        else

        {

            aSave=realloc(a,sizeof(char)*len);

            if(!aSave)

                return 1;

            a=aSave;

            a[len-2]=c,a[len-1]=0;

        }

        len++;


    }

    printf("输入的字符串数组是:\n%s\n",a);

    free(a);

    return 0;

}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式