C 记住计数器的值

C 记住计数器的值,c,C,我想在每次选择案例1的值时放入数组ABC,直到数组ABC满为止。我的问题是,我只能在这个程序中输入ABC[0]中的值。有没有办法记住计数器的值,所以它不总是0?也许使用if语句?但是在这个程序中,如果一开始只有一次是真的,那么如何表达if语句呢 但是ABC也应该被允许有空的空间我认为在主函数之外声明计数器将使其成为全局范围 这样,每次你呼叫main时;将该值重置为0 因此,在第2行的主声明之前写入int counter=0。在counter++之后,调用main函数,将计数器重新初始化为0。您应

我想在每次选择案例1的值时放入数组ABC,直到数组ABC满为止。我的问题是,我只能在这个程序中输入ABC[0]中的值。有没有办法记住计数器的值,所以它不总是0?也许使用if语句?但是在这个程序中,如果一开始只有一次是真的,那么如何表达if语句呢


但是ABC也应该被允许有空的空间

我认为在主函数之外声明计数器将使其成为全局范围

这样,每次你呼叫main时;将该值重置为0


因此,在第2行的主声明之前写入int counter=0。

在counter++之后,调用main函数,将计数器重新初始化为0。您应该使用循环:

#include <stdio.h>

int main()
{

int input, counter,value;
int ABC[3];

counter = 0;

scanf("%d", &input);

switch (input)
{
case 1:
    if (counter >=4)
    {
        printf("Error\n"); 
    }
    scanf("%d", &value);
    ABC[counter]= value;
    printf("ABC[%d] is %d \n", counter, ABC[counter]);
    counter++;
    main();
    break;

case 2: //do anything
    main();
    break;
default: 
    printf("a is anything\n"); 
    break;
}

return 0;
}

呼叫main是非法的。如果您想要递归代码,您需要将其提取到一个新函数中。尽管如此,您可能可以使用循环而不是递归来实现所需的行为,这将有助于为每个调用提供一组新的局部变量。您需要在现在位于main和return之间的所有代码周围放置一个循环。@AndrewMedico main可以在CC++中进行递归调用。
int counter = 0;
do
{
    // Your scanf goes here
    switch(scanf_result)
    {
    // Add your case labels here
    default: // Incorrect input? Let's start again!
        continue;
    };
    counter++;
}
while(counter < 3);