书上有道题目: 编写一个C程序,用于接受用户输入的居住城市,并在城市为“Bei Jing“的时候,显示消息“您来自北京,我也是”,否则显示“我们居住在不同的城市”
题目要求已经完成,问题是,当用户输入bei jing的时候,显示正确,但是输入BEI JING 时候显示错误,我不知道如何去转换大小写。因为用户输入的时候是不区分大小写的。但程序却区分。而且,输入中文又该如何处理呢?希望大家能帮我看一下。谢谢!!
代码帖在下面,写的不好,请提意见谢谢!!
#include<stdio.h>
#include<string.h>
void main()
{
char city[15];
printf("请输入您所在的城市:\t");
gets(city);
if(strcmp(city,"bei jing")==0)
printf("\n您来自北京,我也是!!\n\n");
else
printf("\n我们居住在不同的城市!!\n\n");
}
----------------解决方案--------------------------------------------------------
想用 tolower函数 来将用户输入的字符号转变成小写的,但是老出错误,找不到原因,还有,这个函数能定义为char类型吗?
----------------解决方案--------------------------------------------------------
不用那么麻烦,改判断语句即可
if(strcmp(city,"bei jing")==0||strcmp(city,"BEI JING")==0)
----------------解决方案--------------------------------------------------------
不用那么麻烦,改判断语句即可
if(strcmp(city,"bei jing")==0||strcmp(city,"BEI JING")==0)
如果用户输入的是Bei Jing或者是中文呢??
哈哈,可能是有点较真了。
不过,那个tolower函数应该能用吧,可以将输入的字符串,转换成小写然后做判断就OK了吧
----------------解决方案--------------------------------------------------------
当然能用吖...
不算叫真儿,做一个软件要考虑到各种情况
bei jing Bei Jing BEI JING BeI jing ....北京
不过那太麻烦了 没有必要的 你只需要把bei jing 和Bei Jing判断为正确就行了(建议你用tolower做下) 至于汉字北京那就是题目的问题了
----------------解决方案--------------------------------------------------------
恩,我再用tolower做看看,不过,是否有个类型转换问题呢,书上tolower是int 类型的。
----------------解决方案--------------------------------------------------------
没有
int 型包含256个ASCII码 无论小写还是大写字母都在这其中
----------------解决方案--------------------------------------------------------
int tolower(
int c
);
Parameters
c
Character to convert.
Return Value
Each of these routines converts a copy of c, if possible, and returns the result. There is no return value reserved to indicate an error.
----------------解决方案--------------------------------------------------------
唉 麻烦
用strlwr(city); 得了 呵呵
----------------解决方案--------------------------------------------------------
自定义一个mystrcmp()即可.
int mystrcmp(char *str1,char *str2)
{
while(*str1!='\0'&&(*str1==*str2)||(*str1>='a'&&*str1<='z'&&*str1==*str2+32)||(*str1>='A'&&*str1<='Z'&&*str1==*str2-32))
{
str1++;
str2++;
}
return *str1-*str2;
}
----------------解决方案--------------------------------------------------------