簡體   English   中英

是或否退出switch語句

[英]yes or no to exit a switch statement

是否可以創建yes或no函數以退出switch語句。 如果(y)es被擊中,它將退出。 如果(n)o被擊中,它將循環返回到開關的選項。 如果是這樣,將如何進行。 到目前為止,這就是我所擁有的。

我希望這有助於闡明我要做什么

int yes_no(void) {

    scanf("%d", &option);

    while (option == 'y' || option == 'Y' || option == 'n' || option == 'N') {
        if (option == 'y' || option == 'Y') {
            return 1;
        } else
        if (option == 'n' || option == 'N') {
            return 0;
        } else {
            printf("Only (Y)es or (N)o are acceptable");
        }
    }
}

int main(void) {
    int select;

    do {
        printf("0 exit");
        printf("1 hello");

        scanf("%d", &select);

        switch (select) {
          case 0:
            printf("Exit the program? (Y)es or (N)o :");
            yes_no(); // if (n)o is hit it will loop back to the menu
            break;
          case 1:
            printf("hello how r u doing");
            break;
          default:
            printf("not accepted number");
        }
    } while (select != 0);
}

考慮以下yes_no函數。

int yes_no() {
  char option;

  while (1) {
    printf("(y/n): ");
    if (scanf(" %c", &option) != 1) {
      printf("Error occurred while reading option.\n");
      continue;
    }

    if (option == 'y' || option == 'Y') {
      return 1;
    } else if (option == 'n' || option == 'N') {
      return 0;
    } else {
      printf("Only (y)es or (n)o are acceptable.\n");
    }
  }
}

如果輸入為yes ,則返回值為1如果為no ,則返回值為0 考慮到這一點,在switch語句的代碼塊為case 0case 0 ,可以捕獲此函數的返回值,然后將其用於中斷循環或不執行任何操作。 例如:

int main(void) {
  int select;
  int continue_loop = 1;

  printf("Press 0 to exit\n");
  printf("Press 1 for hello\n\n");

  while (continue_loop) {
    printf("(0/1): ");
    if (scanf(" %d", &select) != 1) {
      printf("Error occurred while reading number.\n");
      continue;
    }

    switch (select) {
      case 0:
        printf("Exit the program? (y)es or (n)o;\n");
        int make_sure = yes_no();  // yes_no() returns 1 if 'yes', and 0 if 'no'
        // If 'yes', break while loop by setting continue_loop to 0.
        // Do nothing in case of 'no'
        if (make_sure == 1) {
          continue_loop = 0;
        }
        break;
      case 1:
        printf("Hello, how are you doing?\n");
        break;
      default:
        printf("Number not accepted.\n");
    }
  }

  return 0;
}

如果我正確地回答了您的問題,這應該可以完成工作:

int yes_or_no()
{
  do
  {
    char option = 0;
    scanf(" %c", &option);
    if (option == 'y' || option == 'Y')
      return 1;
    if (option == 'n' || option == 'N')
      return 0;
    printf("Only (Y)es or (N)o are acceptable");
  }
  while( 1 );
}

使用switch可以更好地執行代碼:

int yes_no(void) {
scanf("%d", &option);
while (1){
switch(option){
case 'y':
case 'Y':
return 1;
case 'n':
case 'N':
return 0;
default:
printf("invalid input.try again");
scanf("%d", &option);
}
}
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM