char 字符串操作

一、char 字符串表达形式
1. char buf[128]
2. char* p = buf
3. 字符串常量 const char* p = “hello”
备注:char 以0结尾!

二、字符串遍历

int ergodic(const char* p)
{
    for(int i = 0; ; i++)
    {
        char ch = p[i];
        if(ch == 0)
            break;
    }
    return 0;
}

三、字符串长度计算

int get_length(const char* p)
{
    int count = 0;
    while(p[count])
        count++;
    return count;
}

四、字符串复制

char src[] = "hello";
char dst[128]; //目标缓冲区要足够大,不然可能会越界
int i=0;
while(1)
{
    dst[i] = src[i];
    if(src[i] == 0) //0也要拷贝
        break;
    i++;
}

五、字符串比较

int compare(const char* p1, const char* p2)
{
    int i=0;
    while(p1[i] == p2[i])
    {
        if(p1[i] == 0)
            break;
        i++;
    }
    if(p1[i] == p2[i]) //字符串相等
        return 0;
    else if(p1[i] > p2[i])
        return 1;
    else
        return -1;
}

六、字符串删除
删除指定位置的字符

void erase(char a[], int index)
{
    int len = strlen(a);
    for(size_t i = index; i<len; i++)
    {
        a[i] = a[i+1];
    }
}

删除字符串中的某种字符

#include<string.h>
void erase(char a[], char del)
{
    int len = strlen(a);
    int count = 0;
    char* copy = (char*) malloc(len + 1);
    for(size_t i=0; i<ken; i++)
    {
        char ch = a[i];
        if(ch != del)
        {
            copy[count] = ch;
            count++;
        }
    }
    copy[count] = 0; //添加结束符
    strcpy(a, copy);
    free(copy);
}

七、字符串插入

#include<string.h>
void insert(char a[], int index, char ins)
{
    int len = strlen(a);
    for(size_t i=len; i>index; i++)
    {
        a[i] = a[i-1];
    }
    a[index] = ins;
    a[len+1] = 0; //添加结束符
}

八、字符串分割

void split(char a[], char* parts[], char b) //char a[]为待分割字符串,char* parts[]用于存放分割得到的结果,char b为分割标记
{
    int count = 0; //分段的个数
    int len = strlen(a);
    for(size_t i = 0; i < len; i++)
    {
        char ch = a[i];     
        if(ch == b)
        {
            a[i] = 0; //修改为结束符,完成分段
        }
    }

    parts[0] = a[0];
    count++;
    for(size_t i = 0; i < len - 1; i++)
    {
        char ch = a[i]; 
        char ch2 = a[i + 1];            
        if(ch == 0 && ch2 != 0)
        {
            parts[count] = a[i + 1];
            count++;
        }
    }
}

猜你喜欢

转载自blog.csdn.net/Xu_Haocan/article/details/80850124