【问题标题】:Can someone tell me whats wrong with my scanf?有人能告诉我我的 scanf 有什么问题吗?
【发布时间】:2023-01-14 13:55:26
【问题描述】:

当我输入一个值时,它不会调用我想要的函数,而是根本不读取输入并跳到主函数。这是我认为有错误的代码:

void passPrompt() {

  int choice = 0;
  white();
  system("clear");
  printf("\n\nWould you like to change the password?\n\n");
  printf("\n\n1.yes \n2.no \n\n");
  scanf("%i", &choice);
   getchar();
  if (choice == '1') {

     changePass();
    }
    if (choice == '2') {
  
      printf("aaa");
   }
  }

我尝试更改变量类型并在括号内移动,但似乎没有任何效果

【问题讨论】:

  • “跳到主线?”---> 你是什么意思?您显示的代码缺少主要功能。请编辑问题以提供最小的、可重现的示例。
  • 将整数 choice 与单个字符 '1''2' 进行比较...不好...
  • 如果用户输入 342 会发生什么?

标签: c scanf


【解决方案1】:

看起来问题出在 if 语句中的条件上。变量“choice”是一个整数,但您将其与字符“1”和“2”而不是整数 1 和 2 进行比较。将条件更改为: if (choice == 1) 和 if (choice == 2) 分别。

此外,您可以删除多余的 getchar() 语句。 另外,尝试检查 scanf 的返回值。它将返回成功匹配和分配的输入项数,可用于检查错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多