c 字符串处理 比如需要判断一个字符串的最后一位是否为字母y 应该如何判断?

[复制链接]
查看11 | 回复4 | 2011-6-27 02:11:04 | 显示全部楼层 |阅读模式
回复

使用道具 举报

千问 | 2011-6-27 02:11:04 | 显示全部楼层
说一下一般c语言的处理方式吧。
对于字符串,最后都是以\'\\0\'结束的,可以用strlen()函数来判断它的长度。假设存储字符串的数组名为name。那么strlen(name)表示一共有多少个有效字符,而字符串的最后一位的数组位序应该是数组长度减1。所以就可以使用下面方式来进行判断:
if(name[strlen(name)-1]==\'y\')
{
...
}
当然对于c,因为有string类,所以还有基于string类的成员函数的实现方式,但是其实现原理都是这样的。
不明白可以追问。









<h4class=\"ask\">追问


感谢
如果要在字符串后面加上一个字符串或字符应该如何操作?
比如charS[100]
S=\"test\";
要使这个字符串后面加上一个\"test\"应该如何操作?
回复

使用道具 举报

千问 | 2011-6-27 02:11:04 | 显示全部楼层
首先说一下,你这种赋值方式是不对的,要在声明字符数组的同时对数组进行初始化,如下:
charS[100]=\"test\";
这个实现的方式有很多种,最直接的一种方式就是通过字符数组进行赋值。
S[4]=\'t\';
S[5]=\'e\';
S[6]=\'s\';
S[7]=\'t\';
S[8]=\'\\0\';不要忘了这一句,对于字符串都是以\'\\0\'结束的。
第二种是通过调用strcat()函数进行字符串连接,它要求第一个参数的存储空间足够容纳连接后的字符串,包含头文件string.h,使用方式:
strcat(S,\"test\");
当然,这是字符串连接的常用方式。
回复

使用道具 举报

千问 | 2011-6-27 02:11:04 | 显示全部楼层
以前学P的现在在转C
不过为什么读入一个字符串查看字符串的时候却是在\\0之后一堆野值并且字符串长度为加上野值的长度?
字符串在处理之前一定要先初始化是吗?
回复

使用道具 举报

千问 | 2011-6-27 02:11:04 | 显示全部楼层
c语言里面,编译器不确保申请的字符数组内的值,利用如下方式申请的字符数组里的全是野值:
charS[100];
它包含100个字节的存储空间,但是里面的值是不可预知的。
字符串的长度是\'\\0\'字符前面的所有字符个数,不包括\'\\0\'之后的字符。
字符串在使用它的值之前是需要进行初始化的,要不然全是野值根本没有埃第一种方式是在申请字符数组的同时进行初始化:
charS[100]=\"test\";
或者
charS[100]={\'t\',\'e\',\'s\',\'t\'};不需要手动添加\'\\0\',因为后续的值都是\'\\0\'。
这样初始化之后,剩余空间的值都自动变成\'\\0\'。
还有的方式就是:
charS[100];
S[0]=\'t\';
S[1]=\'e\';
S[2]=\'s\';
S[3]=\'t\';
S[4]=\'\\0\';这种方式需要手动添加\'\\0\'字符,因为这是为数组元素赋值。
反正记住,在c中,字符串存储的方式是使用字符数组,字符串结束的标志是\'\\0\'字符,字符串的长度是\'\\0\'之前的字符个数。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行