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

2025-04-28 14:36:31
推荐回答(1个)
回答1:

头文件malloc.h

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

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

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

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

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

#include

#include

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;

}