首页 > 解决方案 > 如何修复我的开关盒以使其正常工作?

问题描述

我一直在做一个C关于组建团队并将其保存在文件中的项目,以便在下一次执行时可以读取它。现在我正在开发一个功能,该功能应该向用户询问团队中的一名球员并消除用户选择的球员。

为此,我正在使用for loop打印结构对象中存在的每个玩家,然后我要求用户选择要删除的玩家。

然后我有一个switch case因为,根据用户选择的玩家的ID,上面的玩家应该向下移动一个位置。

代码如下:

    int eliminarjogadores(jogador players[NUM], FILE *fplayers, int nj){
  int a=0;
  int i=0;
  printf("Qual o jogador que pretende eliminar?\n");
  for(i=0;i<nj;i++){
    printf("%i - %s\n",i+1, players[i].nome);
  }
  scanf("%i",a);

  switch (a) {
    case 1:
    printf("fds...\n" );
    while(a<nj&&a<NUM){
      strcpy(players[a-1].nome,players[a].nome);
      a++;
    }
    if(a==NUM-1){
      strcpy(players[a-1].nome,"");
    }

    break;
    case 2:
    break;
    case 3:
    break;
    case 4:
    break;
    case 5:
    break;
    case 6:
    break;
    case 7:
    break;
    case 8:
    break;
    case 9:
    break;
    case 10:
    break;
    default:
    printf("Opção inválida!\n");
    break;
  } 

  return nj-1;
}

代码还没有完成,但是如果用户选择选项一,它应该用第一个玩家的名字替换玩家二的名字,第二个玩家的名字替换第三个玩家的名字,依此类推,直到对象上没有玩家结构,然后最后一个玩家应该有一个空名称,如“”。

但是当我尝试运行代码并选择这些选项时,我有这个输出: 代码输出

它没有进入开关盒,我不知道问题出在开关盒本身还是在scanf或其他地方,你们能帮帮我吗?

标签: cswitch-statement

解决方案


推荐阅读