如何将我的程序重置为默认值

时间:2016-03-09 13:10:11

标签: c

有没有人知道如何将程序重置为默认值, 我需要使用循环吗?

int main(){

int choice = 0;
int days = 1,i;
int stocks[99];

for (;;) {

    clrscr();
    printf("Day %d\n", days);

    printf("1. harvest\n");
    printf("2. View Stocks\n");
    printf("3. Reset\n");
    printf("\nchoice: ");

    scanf("%d", &choice);

    if (choice == 1){

        clrscr();
        printf("Enter No. of rice harvested: ");
        scanf("%d", &stocks[days]);
        days++;
    }

    if (choice == 2){

        clrscr();
        printf("Day    Stocks\n");

        for (i = 1; i < days; i++){

            printf("%2d     %4d\n", i, stocks[i]);          
    }

     getch();

    }if(choice == 3){

        // reset
    }
}

}

例如,如果我重置我的程序,那么日子将回到第1天,股票将变为空。

3 个答案:

答案 0 :(得分:1)

如果要重置,则表示变量应采用其初始值,然后执行此操作:

if(choice == 3){
  choice = 0;
  days = 1;
  // i and stocks do not have initial values, maybe nullify them
}

答案 1 :(得分:1)

if(choice == 3)
{
   days = 1;
   memset(stocks, 0x00, sizeof(stocks)/sizeof(stocks[0]));
}

提示:更改

int stocks[99];

int stocks[99] = {0};

确保for循环开始时所有数组字段都为0

C99 [$ 6.7.8 / 21]

  

如果括号括起的列表中的初始值设定项少于聚合的元素或成员,或者用于初始化已知大小的数组的字符串文字中的字符数少于数组中的元素,则聚合的其余部分应与具有静态存储持续时间的对象隐式初始化。

答案 2 :(得分:0)

要重置阵列,您可以使用简单的for循环

for (i=0;i<99;i++)
    stocks[i]=0;\\ this will make sure that all values are rested to 0

选择和天数可以设置为所需的值

choice=0; \\ not necessary since the loop will reset and the user will enter a new value
days=1;