普通字符串的逆序:
char str[100] = "hello world";
int len = 0;
while(str[len++]); // 求出字符串长度,这里的长度包含了\0 比实际字符串长度大1
int min = 0;
int max = len -2;
while (min < max)
{
char tmp = str[min];
str[min++] = str[max];
str[max--] = tmp;
}
printf ("%s\n", str);
中文字符串的逆序:
//在utf-8编码格式中,一个中文字占用三个字节
char str[100] = "你好世界";
int len = 0;
while(str[len++]); // 求出字符串长度,这里的长度包含了\0 比实际字符串长度大1
int min = 0;
int max = len - 2;
while (min < max)
{
char tmp = str[min];
str[min] = str[max-2];
str[max-2] = tmp;
tmp = str[min+1];
str[min+1] = str[max-1];
str[max-1] = tmp;
tmp = str[min+2];
str[min+2] = str[max];
str[max] = tmp;
min += 3;
max -= 3;
}
统计中英混合字符串长度:
//在utf-8编码格式中,一个中文字占用三个字节,且首字节为负
char str[] = "abc你好世界";
int len = 0;
int i = 0;
while(str[i])
{
if (str[i] < 0)
i += 2;
i++;
len++;
}
去掉字符串右边的空格:
char str[100] = "hello world ";
int len = 0;
while(str[len++]);
len--;
int i;
// 字符串从后往前比较,找到第一个非空格的字符,将其后面的字符置为\0
for (i = len - 1; i >= 0; i--)
{
if(str[i] != ' ')
{
str[i+1] = '\0';
break;
}
}
printf ("<%s>\n", str);
去掉字符串左边的空格:
char str[100] = " hello world";
int len = 0;
while(str[len++] == ' '); // 得到字符串前面有多少个空格
len--;
// 将字符串往前移动len个位置
int i = len;
while(str[i])
{
str[i-len] = str[i];
i++;
}
str[i-len] = '\0'; // 给字符串添加结束标志
printf ("<%s>\n", str);
}