【C语言】我解决了输入中文判断中文的问题!一个简单的扑克牌管理查询系统(CodeBlocks)
PS:编程环境为Codeblocks
前言
老师又双叒叕不做人了!这次直接上升了一个小难度!
扑克牌的查找输入输出全要中文
历经千辛万苦,问老师、找大佬博客之后,我找到了一个神奇的函数——strcmp
strcmp可以对比字符串的大小,利用这个函数就可以做出比对中文字符串的操作。
比如:
if(strcmp("针不戳", "真不错") == 0) /*比较字符串是否相等*/
{
printf("住在山里针不戳\n",WDNMD);
}
不过要想使用strcmp,必须添加头文件:
#include <string.h>
只是举个小小的例子(),以下为正文
提示:程序仅供参考,如有错误欢迎指正
一、数据文件 “扑克牌.txt” 的处理
将扑克牌上的数据分为四个模块,分别为全称(allname)、颜色(color)、等级(lv)(黑桃>红桃>梅花>方块)、数字(num),方便电脑处理。
例如:红桃8
| 全称 | 颜色 | 等级 | 数字 |
| 红桃8| 红色 | 3 | 8 |
二、程序的编写
1.主程序菜单
在编写主程序菜单的时候想玩点花的,于是做了一个让用户二次运行程序时提示菜单简化的系统,虽然还没有办法直接在提示阶段直接读取用户输入的数字,但是也是有点进步:
PS:界面更花了,有点不容易看:(
/*问题:扑克牌信息存储和操作,具体如下:
(1)定义结构体,存储扑克牌的:颜色,花型,大小
(2)文件读取存储一副扑克牌
(3)输出显示扑克牌信息
(4)按颜色分类输出扑克牌信息
(5)按花型分类输出扑克牌信息
(6)输入一扑克牌(如:黑桃5),查找输出其所在下标位置。
(7)输入一下标位置,查找输出其对应的扑克牌信息。
(8)对扑克牌进行升序排列并输出,排序规则:黑桃>红桃>梅花>方块,同一花色内,按大小升序排列。
(9)设计主程序菜单,完成上述各算法的测试调用*/
/* ※@rain_HYS※ 编写,仅供参考学习交流还有交作业使用 */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 54
struct poker /*定义结构体存储成绩*/
{
char allname[N]; /*扑克牌全称*/
char color[N]; /*扑克牌花色*/
int lv; /*扑克牌等级(黑桃>红桃>梅花>方块)*/
int num; /*扑克牌数字*/
} pk[N];
void SavePoker();
void ColorPoker();
void FlowerPoker();
void FindPlacePoker();
void SearchPoker();
void LevelPoker();
int main(void)
{
int allnum; /*主程序读取用户输入数字*/
char allword;
int rain = 1;
printf("\n------- BUA ※ 扑克牌信息查询系统 ※ rain_hys开发 -------\n"
"\n------- 该程序目前具有以下功能: -------\n"
"\n------- (1)文件读取存储一副扑克牌,并显示 -------\n"
"\n------- (2)按颜色分类输出扑克牌信息 -------\n"
"\n------- (3)按花型分类输出扑克牌信息 -------\n"
"\n------- (4)输入一扑克牌(如:黑桃5),查找输出其所在下标位置 -------\n"
"\n------- (5)输入一行数,查找输出其对应的扑克牌信息 -------\n"
"\n------- (6)对扑克牌进行升序排列并输出 -------\n" /*程序菜单,后期可改*/
"\n******* PS:该程序所有需要输入的字母均不区分大小写 *******\n"
"\n请输入想要运行的程序的数字编号:\n");
scanf("%d",&allnum);
switch(allnum)
{
case 1:
SavePoker(); /*文件读取存储一副扑克牌,并显示*/
break;
case 2:
ColorPoker(); /*按颜色分类输出扑克牌信息*/
break;
case 3:
FlowerPoker(); /*按花型分类输出扑克牌信息*/
break;
case 4:
FindPlacePoker(); /*输入扑克牌查找输出其所在下标位置*/
break;
case 5:
SearchPoker(); /*输入行数查找输出其对应的扑克牌信息*/
break;
case 6:
LevelPoker(); /*对扑克牌进行升序排列并输出*/
break;
case 813:
printf("不会吧不会吧\n"
"不会有人真的连扑克牌有啥都记不清吧\n"); /*彩蛋——egg*/
break;
default:
printf("输入错误字符,请重新运行程序!\n");
break;
}
do
{
printf("\n******* 程序已经结束或者可能遇到错误咯! *******\n"
"******* 随意输入一个除N以外的字符来重新运行程序吧? *******\n"
"*******如果忘记了哪个数字对应哪个功能,可以输入S来查询程序都有哪些功能哦*******\n"
"******* 或者输入N来退出这个程序 *******\n"
"******* 再次提示:该程序所有需要输入的字母均不区分大小写 *******\n"); /*用户交互,减少用户输入难度*/
scanf("%s",&allword);
if(allword != 'N' || allword != 'n') /*用户自由选择是否展示系统界面*/
{
if(allword == 's' || a