根据输入字符结束数组输入

我的意思是说,比如要输入一个不定长的数组(或者是字符串),提示用户输入完后以某个字符或者标志结束,这个要怎么实现啊?

用 realloc() ,下面是实现代码作参考

 #include <stdio.h>
#include <malloc.h>

int main(void)
{
    char *p = NULL, *p1 = NULL, c;
    int count = 0, i = 0, size = 100;

    if(!(p = (char *)malloc(size)))
        return 0;

    while('0' != (c = getchar()))
    {
        if(count < 100)
        {
            p[i] = c;
        }
        else
        {
            size += 100;
            p1 = (char *)realloc(p, size);
            if(!p1)
            {
                break;
            }
            else
            {
                p = p1;
            }

            p[i] = c;
            count = 0;
        }

        count++;
        i++;
    }

    free(p);
    return 0;
}

不定长不等于无限长。比如说开一个1万大小的数组,对计算机来说微乎其微。但是绝对够用。
当然,你也可以使用string vector或者链表。

 char data[10000];
int i = 0;
char ch = '\0';
while ((ch = getchar()) == '\n') //比如说\n是结束符
{
    data[i++] = ch;
}
data[i] = '\0';

使用数组的话,长度超过数组分配的长度是,再进行长度扩充就好了

    List<Integer> list = new ArrayList<Integer>();
        System.out.println("请输入一个整数,输入over结束输入");
        Scanner scanner = new Scanner(System.in);
        String valueStr = scanner.next();
        //判断是否是整数
        Pattern pattern = Pattern.compile("-?\\d+");
        while(!"over".equals(valueStr)){
            if(!pattern.matcher(valueStr).matches()){
                System.out.println("输入的不是整数,请重新输入");
                valueStr = scanner.next();
                continue;
            }
            list.add(Integer.parseInt(valueStr));
            System.out.println("请输入一个整数,输入over结束输入");
            valueStr = scanner.next();
        }
        System.out.print("您共输入了"+list.size()+"个整数");
        System.out.println(list);

用Integer.MAX_VALUE来定义一个无限长的数组

申请一个大一点的数组,循环接收字符存入数组,并判断如果接收到某个特定的字符就跳出循环。

char a[MAX];
int i=0;
while(a[i] = getchar() != 'x')
     i++;

可以在程序运行前开足够大的空间,然后程序读入后判断何时结束即可。