
关于C语言中的字符比较!!
怎么让程序在用户端输入的字符是否是某个字符?如我在用户窗口输入了一个字母a,怎样让程序判断是这是程序要求的字母,并根据这个输入而调用相关的函数?补充:我知道怎样从用户端输...
怎么让程序在用户端输入的字符是否是某个字符?如我在用户窗口输入了一个字母a,怎样让程序判断是这是程序要求的字母,并根据这个输入而调用相关的函数?
补充:我知道怎样从用户端输入字母~~getchar 和scanf都可以吧.重点在于if判断那里~~好像老是出错,用的就是平常在整型数据做判断时的方法,是不是字符和整型数据有差距呢?能否给个小例子提点一下?比如,输入a的时候就调用计算圆面积的函数,输入p的时候就调用计算圆周长的函数. 展开
补充:我知道怎样从用户端输入字母~~getchar 和scanf都可以吧.重点在于if判断那里~~好像老是出错,用的就是平常在整型数据做判断时的方法,是不是字符和整型数据有差距呢?能否给个小例子提点一下?比如,输入a的时候就调用计算圆面积的函数,输入p的时候就调用计算圆周长的函数. 展开
5个回答
展开全部
1、定义一个char * 类型指针,指向字符串首字符首地址。
2、定义一个数组,数组里存放元素为字符串各个字符+'\0',其中'\0'为码0值,编译器会自动在字符串的末尾添加此值。
先看这两个"变量"分别是存在内存的哪个区域,(后面可知string1为常量)修改代码如下,打印这两个“变量”的内存地址,查看运行结果:
查看进程的内存分布情况,(详情请查看:RobotCode俱乐部:手撕虚拟内存(1)——字符串在虚拟内存中的段位置与/proc虚拟文件系统),string1内存首地址为0x80485a0,string2内存首地址为0bfaebfd8。如下图,可知这两种定义方式,一种位于只读区(0x8048000 < 0x80485a0 < 0x8049000),一种位于Stack区(0xbfacd000 < 0bfaebfd8 < 0xbfaee000)。可知,string1为常量(只读的,权限为r),在编译时就确定了。string2存放在栈上,运行时确定。这也决定了,定义string1的方式适用于定义字符串常量,string2方式适用于字符串变量可能需要被修改的情况。同时需要注意的是,未必定义在函数体里的“变量”都会分布在栈上,如这里的字符串常量,及static修饰的局部变量,他们都是分布在全局静态区,由编译器在编译时决定,而非函数运行时动态分配。另外全局静态区的变量生命期与整个进程的生命期相同,大于等于函数的生命期。
2、定义一个数组,数组里存放元素为字符串各个字符+'\0',其中'\0'为码0值,编译器会自动在字符串的末尾添加此值。
先看这两个"变量"分别是存在内存的哪个区域,(后面可知string1为常量)修改代码如下,打印这两个“变量”的内存地址,查看运行结果:
查看进程的内存分布情况,(详情请查看:RobotCode俱乐部:手撕虚拟内存(1)——字符串在虚拟内存中的段位置与/proc虚拟文件系统),string1内存首地址为0x80485a0,string2内存首地址为0bfaebfd8。如下图,可知这两种定义方式,一种位于只读区(0x8048000 < 0x80485a0 < 0x8049000),一种位于Stack区(0xbfacd000 < 0bfaebfd8 < 0xbfaee000)。可知,string1为常量(只读的,权限为r),在编译时就确定了。string2存放在栈上,运行时确定。这也决定了,定义string1的方式适用于定义字符串常量,string2方式适用于字符串变量可能需要被修改的情况。同时需要注意的是,未必定义在函数体里的“变量”都会分布在栈上,如这里的字符串常量,及static修饰的局部变量,他们都是分布在全局静态区,由编译器在编译时决定,而非函数运行时动态分配。另外全局静态区的变量生命期与整个进程的生命期相同,大于等于函数的生命期。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果是字母的话,用==就可以比较的
比如程序要求的字母是a : char ch = 'a';
用char c接收用户输入的字母: c = getchar();
if(c==ch) 调用相关函数
不知道是不是你想要的。。。希望能帮到你。。。仍有问题可以HI我。。。
比如程序要求的字母是a : char ch = 'a';
用char c接收用户输入的字母: c = getchar();
if(c==ch) 调用相关函数
不知道是不是你想要的。。。希望能帮到你。。。仍有问题可以HI我。。。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
字符可以直接比较
字符常数注意使用单引号 :‘c’
char c;
...
switch(c){
case 'a':
break;
case 'b';
break;
default:
break;
}
字符常数注意使用单引号 :‘c’
char c;
...
switch(c){
case 'a':
break;
case 'b';
break;
default:
break;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
调用getchar()函数,然后用if进行判断啊…………
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询