一、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++;
}
}
}