首页 > 用户发贴区 > 编程问题提问区 > C语言中关于自动获取用户输入数组的大小??
2008
08-11

C语言中关于自动获取用户输入数组的大小??

尽管C语言中可以使用malloc来动态的分配数组,也可以使用C99的新特性,直接定义动态数组,不过这些的前提都是,用户必须手动的输入数组的大小。

但实际情况是,你不大可能每次都要用户自己来确定数组的大小?

如何实现:从scanf中读入一个字符串,并直接根据字符串的长度来定义动态数组?(使用纯C语言实现,不要使用其他工具)  谢谢各位了!


C语言中关于自动获取用户输入数组的大小??》有 3 条评论

  1. whos 说:

    我只想到了一种方法,比较麻烦,不知道还有没有其他简便的方法。

    就是利用链表。每循环一次使用getchar()从内存中读取一个字符,然后再用malloc()从内存中申请一个字节的字符型空间,然后把读取的字符进行判断并储存到空间里。使这个空间指向下一个空间,就这样形成一个链表。

    这就是我能想到的方法,可能比较麻烦。

  2. 一剑飘魂 说:

    有一个办法就是建立一个,把输入的字符串按字符写入文件中,然后用filelength得出文件的大小,再用得出来的大小进行malloc。

  3. 一剑飘魂 说:

    另外还有一个简单点的办法就是用realloc!
    先用malloc分配一个固定的空间用来存放一定数量的字符,当用getchar输入时同事检查输入的长度,当长度不够时用realloc对该空间重新分配。这个方法应该是可行的!

留下一个回复