字符串的实用操作

普通字符串的逆序:

    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);

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值