繁体   English   中英

switch() 函数中的 getchar() 不起作用

[英]getchar() in switch()-function doesn't work

所以我试图自己编写我的第一个项目,并且已经在 getchar() 函数方面遇到了一些麻烦。

我想要做的是获得用户输入而无需按回车键。 用户输入应该“激活”与输入等效的案例(例如输入=案例= 1)。 取而代之的是,我仍然必须按 Enter 键,但随后只会调用默认命令。

我看到,有一些关于它的问题,但没有一个真的帮助了我。 这是我的代码:

#include <stdio.h>
#include "open_txt.h"

int main (){

    printf("\n\n\tAdressbook\n\n");

    printf("Main menu: \n\n");

    printf("1. Add contact\n");
    printf("2. Edit contact\n");
    printf("3. Search contact\n");

    int ui;
    ui = getchar();

    switch(ui){

        case 1:
            printf("\n\nADD CONTACT\n\n");
            break;
        case 2:
            printf("\n\nEDIT CONTACT\n\n");
            break;
        case 3:
            printf("\n\nSEARCH CONTACT\n\n");
            break;
        default:
            printf("That's not an option!\n");
    }
    return 0;
} 

getchar function 将按下的键作为字符代码返回。 因此,如果有人按1则返回的是字符'1' ,而不是值1

switch中使用字符常量而不是数字常量:

    case '1':
        printf("\n\nADD CONTACT\n\n");
        break;
    case '2':
        printf("\n\nEDIT CONTACT\n\n");
        break;
    case '3':
        printf("\n\nSEARCH CONTACT\n\n");
        break;

我想要做的是获得用户输入而无需按回车键。

然后你应该使用getch() function。 getch()从键盘读取单个字符。 但它不使用任何缓冲区,因此输入的字符立即返回,无需等待回车键。

在这里,switch语句返回一个字符而不是一个值,所以你应该这样写:'1''2''3'

#include <stdio.h> 
#include "open_txt.h"

int main (){

printf("\n\n\tAdressbook\n\n");

printf("Main menu: \n\n");

printf("1. Add contact\n");
printf("2. Edit contact\n");
printf("3. Search contact\n");

int ui;
ui = getchar();

switch(ui)
{
  case '1':
    printf("\n\nADD CONTACT\n\n");
    break;
  case '2':
    printf("\n\nEDIT CONTACT\n\n");
    break;
  case '3':
    printf("\n\nSEARCH CONTACT\n\n");
    break;
  default:
    printf("That's not an option!\n");

   }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM