首页 > 代码库 > 给一个固定的字符串,输入另一个字符串和它比较,直到猜对为止

给一个固定的字符串,输入另一个字符串和它比较,直到猜对为止

本以为很简单,其实简单中也能学到很多细节的问题,下面附上自己的程序,自己学到的细节或者觉得要注意的点在注释中有说明

/* 给一个固定的字符串,输入另一个字符串和它比较(要求只要字母对应上就可以,不用大小写一模一样),直到猜对为止 *//* 思路:将字符串全变为大写字母构成的字符串,再循环比较 */#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++;    }}

 

给一个固定的字符串,输入另一个字符串和它比较,直到猜对为止