【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。