将大写字母改为小写字母会缩短字符串的长度吗?
void lower(char *s)
{
int i;
for (i=0;i<strlen(s);i++)
if(s[i])>='A' && s[i]<='Z')
s[i]-=('A'-'a');
}
答案 0 :(得分:2)
不,它不应该。
其他一些注意事项:
strlen
,尝试将其保存到变量答案 1 :(得分:2)
由于您使用的是ASCII,不,您显然正在进行1对1替换。您是否应该更改代码以支持UTF-8:可能。
答案 2 :(得分:1)
如果您只是将一个字符替换为另一个字符,那么结果字符串仍将具有相同的大小。类型char
始终定义为C或C ++中的一个字节。
答案 3 :(得分:0)
更改字符串的大小写可能会改变长度(如果已完成) 正确。例如,在德语中,两个字符串“SS”将 在某些情况下成为单个字符串“ß”(但不在 其他,例如:“STRASSE” - &gt; “Straße”,但“GASSE” - &gt;“Gasse”)。更改 正确的案例肯定是非平凡的,而且非常本地化 具体。标准中并没有真正支持它。
你发布的代码不会改变长度,但是,它远非如此 正确:根据编码,它可能会改变一些非字母 字符也是(字母表并不总是连续的),它会 肯定无法转换一些字母字符,例如'Ä','Ö'和 瑞典语'Ü'。
答案 4 :(得分:-1)
此代码不会更改字符串的长度。但是代码中存在问题:每次迭代都会计算strlen()
,这是多余的。
将结果存储在变量中并在循环中使用