【C】——C项目中的菜单功能(源码)

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 
 4 int menu()        //选择菜单
 5 {
 6     int result;
 7     printf("**********请选择:***********\n");
 8     printf("**********1.插入:***********\n");
 9     printf("**********2.删除:***********\n");
10     printf("**********3.遍历:***********\n");
11 
12     result = get_int();    
13     while(result > 6 || result < 1)
14     {
15         printf("请输入1-3!\n");
16         result = get_int();
17     }
18         return result;
19 }
20 
21 int get_int()            //得到整型(不完善)
22 {
23     int input;
24     char ch;
25     while(scanf("%d",&input) != 1)
26     {
27         while((ch = getchar()) != '\n');
28         printf("输入格式不对,请重新输入!\n");
29     }
30     getchar();
31     return input;
32     
33 }
34 
35 char get_first()    //得到第一个字符(不完善)
36 {
37     char c,ch;
38     scanf("%c",&c);
39     while(getchar() != '\n')
40         continue;
41     
42     return c;
43 }
44 
45 
46 int get_int()    //完善版      
47 {
48     int value;
49     while(scanf("%d",&value) != 1)
50     {
51         while(getchar() != '\n');
52         printf("格式不对,请重新输入!\n");
53 } 54 while(getchar() != '\n'); 55 return value; 56 } 57 58 char get_first()      //完善版 59 { 60 char value; 61 scanf("%c",&value); 62 while(value == '\n' || value == 32) //value不能等于换行符和空格符 63 { 64 scanf("%c",&value);
      while(getchar() != '\n');
65 } 66 while(getchar() != '\n'); //截掉多余的字符串 67 return value; 68 } 69 70 71 int main(void) 72 { 73 do 74 { 75 switch(menu()) 76 { 77 case 1: printf("1\n");break; 78 case 2: printf("2\n");break; 79 case 3: printf("3\n");break; 80 } 81 do 82 { 83 printf("是否要继续操作?(y/n)"); 84 ch = get_first(); 85 }while(ch != 'y' && ch != 'Y' && ch != 'n' && ch != 'N'); 86 }while(ch == 'y' || ch == 'Y'); 87 88 }

   本文主要介绍菜单功能,有主函数,menu()菜单函数,getfirst()获取字符函数,getint()获取整数函数,四个函数构成;主函数和menu()函数自不必说,主要是getfitst()函数和getint()函数;

  getfirst()函数的功能是获取第一个输入的字符;我们首先要做的就是先获取用户输入的字符,然后判断用户输入的字符是否为换行或者是空格(根据自己的需要随意添加条件),如果符合括号的条件则把用户输入的剩余字符串截取掉,当最后一个字符为'\n'为止。然后重新获取用户输入的字符串,再进行判断;这样做的好处就是防止用户在上一个输入函数中没有处理好'\n'的现象。如果上一个输入是scanf("%d",&value);然后用户输入一个5之后按下回车进行下一个输入。而此时如果跳到getfirst()函数中,则第一个接收的字符串就是'\n',而不是之后用户想要输入的那个字符了。因此在这里我们需要对用户输入的字符进行判断,做适当的截取字符串工作,把此次用户输入的'\n'给截取掉;

  getint()函数的功能是获得一个int型整数,此函数的思想和getfirst()函数差不多,有一点需要解释的是scanf()函数,大家似乎都在用scanf()函数做数据的输入,但是scanf()还有一个功能就是具有返回值。如果输入的格式和scanf()函数定义的格式一样的话,就会返回1。

原文地址:https://www.cnblogs.com/ngnetboy/p/2958789.html