使用goto后如何让程序正常运行?

问题描述

任何选择后,我想询问用户他们是否想再次使用该程序,或者退出。但是如果输入了 y,代码就不能正常工作了。我尝试了其他解决方案,如清除内存等,但我不是很有经验,所以我不知道我在做什么。也对我的语言感到抱歉。这是我的代码的一部分。我有 13 个不同的选择,每个选择都一样


    char str[100];
    int selection;
    char selection2;
    int i;
    begin:

    printf("Welcome to the Character/String Specification program\n");
    printf("Please enter whatever you want \n");
    scanf(" %s",str);

      printf("\nSelect the specification you want\n");
      printf("1) is your input a letter?\n");
      printf("2) is your input a whitespace?\n");
      printf("3) is your input a decimal digit?\n");
      printf("4) is your input a hexadecimal digit?\n");
      printf("5) is your input an upper-case letter?\n");
      printf("6) is your input a lower-case letter?\n");
      printf("7) is your input a letter or a decimal digit?\n");
      printf("8) is your input a control character?(ACSII 0..31 and 127)\n");
      printf("9) is your input a not a letter,digit,whitespace,or invisible control character?\n");
      printf("10)is your input a printable (ASCIII ' '..'~')\n");
      printf("11)is your input have a graphical representation\n");
      printf("12)Do you want to see your input as all upper characters?\n");
      printf("13)Do you want to see your input as all lower characters?\n\n");
      scanf(" %d",&selection);
      printf("\n");

      while(true)
      {
      if(selection == 1)
      {
       while(str[i])
          {
            if(isalpha(str[i]))
            {
                printf("%c is an alphabet\n",str[i]);
            }
            else
            {
                printf("%c is not an alphabet\n",str[i]);
            }
            i++;
          }
          printf("Do you want to go back to the start point? (y) for yes,(n) for no\n");
          scanf(" %c",&selection2);
          if(selection2=='y')
          {
              goto begin;
          }
          else if(selection2=='n')
          {
              printf("Goodbye\n");
              break;
          }

解决方法

我会做这样的事情,而不是使用 goto:

int value = 1;
do {
   //enter your code here
   if(selection2=='n')
      {
          printf("Goodbye\n");
          value = 0;
          break;
      }
} while(value)

这将导致代码至少运行一次并根据用户输入继续运行。 Goto 不是最佳做法,因为它会使阅读变得更加困难。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...