我的程序停止必须用 scanf 做些什么吗?如果是,我应该如何纠正它?

问题描述 投票:0回答:0

我有这个 apply() 函数,它由用户输入数字调用。在输入“2”(检查它的数字然后将其转换为整数)时它起作用了,我可以输入名称,然后在它们之间输入空格(这就是练习中指定的方式),但是,当我第二次输入“2”时,它会打印出“你的名字:”,或者有时它会让我输入我的名字,然后打印出“你希望工作的日子:”然后程序就停止了,没有任何错误代码,甚至不打印 apply() 函数的最后一行。

int main(){
  int choice = 9;
  while(choice != 0){
    choice = getActionFromUser();
    executeAction(choice);
  }
}

int getActionFromUser(){
  char actionId[20];
  printf("\nYour action: ");
  fflush(stdout);
  scanf("%s", actionId);
  int res = -1;
  if(isNumber(actionId)){
    res = atoi(actionId);
  }
  if(res >=0 && res <= 5){
     return res;
  }
  return -1;
}

void apply(){

  printf("\n_________________________________\n");
  printf("Application form");
  printf("\n_________________________________\n");

  //Name
  printf("Your name: ");
  fflush(stdout);
  char name[256];
  scanf("%[^\n]%*c",name);
  fflush(stdin);

  //Day
  printf("The days you choose: ");
  char days[256];
  fflush(stdout);
  scanf("%[^\n]%*c",days);

  fflush(stdin);
  printf("\n_________________________________\n"); //<--- This
}

void executeAction(int choice){
  switch (choice)
  {
    //more code
    case 2:
      apply();
      break;
    //more code
   }
}
c input scanf
© www.soinside.com 2019 - 2024. All rights reserved.