使用 if 语句检测用户是否输入了特定字符或数字

Use if statement to detect if user entered specific character or number

在我的 getInput 函数中,我正在扫描来自用户的输入。

如果用户输入 'q''Q' 我想打印用户希望退出的信息(程序实际上不必 'exit' 在技术术语中)。

如果用户输入任何其他值,我想return那个值并继续运行我的程序。

那么,我的问题是:

我如何测试某个字符值的 int 到 char 转换,类似于我在下面尝试的方法?

我的程序在用户输入字符时退出,在用户输入整数时运行,但没有正确检测到 'q''Q' 已被按下。

这是我目前的代码:

int getInput() {

  int numSets;
  char quitTest1 = 'q';
  char quitTest2 = 'Q';

  //get number of sets from user
  printf("\nEnter desired amount of random number sets (or 'q'/'Q' to quit): ");
  scanf("%d", &numSets);

  if (numSets == (int)quitTest1 || numSets == (int)quitTest2) {
    printf("Exited");
  }

  else {
    return numSets;
  }

}

我可能遗漏了一些主要原则,但我似乎无法在 Google 上找到太多帮助。

感谢所有回答。

注意

scanf("%d", &numSets);

不会给numSets赋任何值,如果输入是一个字符,numSets会保持它以前的值,在这种情况下是未知的,因为变量是未初始化的,提前使用它会导致未定义的行为。

将输入作为 char array 转换为 charint 似乎是最佳选择。

Live sample here

int getInput() {

    char numSets[100];
    int number = -1;
    char q;
    char quitTest1 = 'q';
    char quitTest2 = 'Q';

    //get number of sets from user
    printf("\nEnter desired amount of random number sets (or 'q'/'Q' to quit): ");
    fgets(numSets, sizeof(numSets), stdin);
    if (sscanf(numSets, "%d", &number)){
        printf("%d", number); //testing
        return number;
    } 

    if (sscanf(numSets, "%c", &q) && (q == quitTest1 || q == quitTest2))
        printf("Exited");
    else{
        puts("Invalid input");

    return number; //will return -1;
}