//问答小程序
//比较字符串,并且大小写不敏感
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void tolower(char *p);
int main(void)
{
char pre_answer[20];
char answer[20];
puts("The standard password");
gets(pre_answer);
system("cls");
puts("Input you answer:");
gets(answer);
tolower(answer);
// puts(answer); 验证
while(strcmp(pre_answer,answer) != 0)
{
puts("Wrong,please try again.");
puts("Input you answer:");
gets(answer);
tolower(answer); //标准密码是小写,输入的密码也要变成小写
}
puts("Congratulations!");
return 0;
}
void tolower(char *p)
{
while(*p && (*p>='A' && *p<='Z'))//这里有很隐蔽的错误!!!
{
*p = *p + 'a' - 'A';
p++;
}
}
修改方法1
#include<ctype.h> //大小写转换的头文件
void Tolower(char *str)
{
while(*str)
{
*str = tolower(*str); //要么使用系统函数
str++;
}
}
修改方法2
void Tolower(char *p)
{
while(*p) //若是写成while(*p && (*p>='A' && *p<='Z'))就会出错
{
if(*p>='A' && *p<='Z')
{
*p = *p + 'a' - 'A';
}
p++;
}
}