if(isalpha(str[i])) pts[i] = code[(int)str[i] - 'a'];

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/04 23:32:38

if(isalpha(str[i])) pts[i] = code[(int)str[i] - 'a'];
if(isalpha(str[i])) pts[i] = code[(int)str[i] - 'a'];

if(isalpha(str[i])) pts[i] = code[(int)str[i] - 'a'];
isalpha(str[i])判断数组str的第i个元素(即字符串的第i个字符)是否为英文字符(即是否为'a'~'z'或'A'~'Z')
(int)str[i] 将字符串的第i个字符做强制类型转换,转换为整型
(int)str[i]-'a' 将str[i]与'a'相减,得到str[i]相对于'a'的偏移量.比如:假设str[i]为'b'的话,str[i]-'a'就等于1;如果str[i]为'h'的话,str[i]-'a'就等于7.
code[]数组是一个编码数组,它可以将'a'~'z'的字符映射为其他的数值.
整句话的意思是:
如果str[i]属于'a'~'z'之间的字符的话,那么将其通过code[]编码数组的转换,转换为其他的数值.
注意,isalpha()不仅对'a'~'z'之间的字符返回真值,而且对'A'~'Z'之间的字符也返回真值,所以该句代码中(int)str[i]-'a'会返回负索引,应该避免这种情况.