首页 > 代码库 > 给一个固定的字符串,输入另一个字符串和它比较,直到猜对为止
给一个固定的字符串,输入另一个字符串和它比较,直到猜对为止
本以为很简单,其实简单中也能学到很多细节的问题,下面附上自己的程序,自己学到的细节或者觉得要注意的点在注释中有说明
/* 给一个固定的字符串,输入另一个字符串和它比较(要求只要字母对应上就可以,不用大小写一模一样),直到猜对为止 *//* 思路:将字符串全变为大写字母构成的字符串,再循环比较 */#include <stdio.h>#include <string.h>#include <ctype.h>#define MAX 40void ToUpper(char *);int cmpstr(char*, char*);int main (void){ char ANSWER[] = "Grant"; //这里的ANSWER要用变量字符串数组来储存,不能用define常量形式,因为下面会改变其值为大写的 char try1[MAX]; char try2[MAX]; //用try2是为了防止改变读入的try1值 puts ("Who is buried in Grant‘s tomb?"); gets (try1); //gets()函数从键盘读入数据,放入一个指针指向的地址中,以换行符结束读入 strcpy(try2,try1); //注意该strcpy()函数的用法 ToUpper(ANSWER); ToUpper(try2); while (!cmpstr(ANSWER, try2)) { printf("no, please enter another name:\n"); gets(try1); strcpy(try2,try1); ToUpper(try2); } puts("yes"); puts(try1); return 0;}/********************比较两个字符串**********************/int cmpstr(char* str1, char* str2){ int i=0; if(strlen(str1) != strlen(str2)) return 0; //两个字符串长度不同的话,那么这两个字符串自然就不同了 else { while (str1[i]==str2[i] && str1[i]!=‘\0‘) i++; if(str1[i] == ‘\0‘) return 1; else return 0; }}/********************将一个由字母构成的字符串中的所有字符都变成大写字母**********************/void ToUpper(char * str){ int i=0; while(i<strlen(str)) { str[i] = toupper(str[i]); //单独的使用toupper(str[i])不改变str[i]的值,要使用str[i]=toupper(str[i])赋值才能改变str[i]的值 i++; }}
给一个固定的字符串,输入另一个字符串和它比较,直到猜对为止
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。