基础概念
- " "括起来的内容是字符串,以’\0’结尾
* C语言中没有字符串类型,可以将字符串存入字符数组中
字符串是一个常量不可以改变,字符串本身代表首个元素的地址
char a[]=“hello”;
a[2]=‘w’;
char *p =“hello”;
p[2]=‘w’; 错误
字符串操作
1、求出字符串的长度
C实现函数:
int strLen(char *pStr)
{
if (pStr == NULL)
return -1;
int len = 0;
while(*(pStr++))
{
len++;
}
return len;
}
2、将字符串逆序
C实现函数:
void reverse(char *pStr)
{
int left = 0;
int right = strLen(pStr)-1;
while (left<right)
{
char tmp = pStr[left];
pStr[left++] = pStr[right];
pStr[right--] = tmp;
}
}
3、单词逆序
C实现函数:
void word_reverse(char *pStr)
{
char *p[100]={0};
char *p1=pStr;
char *p2=pStr;
int space_count=0;
// 求出空格数 单词数=空格数+1
while(*p2)
{
if(' '== (*p2))
{
space_count++;
p[space_count]=p2;
}
p2++;
}
p[space_count+1]=p2;
if(space_count>0) //大于一个单词
{
reverse(pStr);
int i;
for(i=1;i<=space_count+1;i++)
{
char *p3=p[i]-1;
while (p1<p3)
{
char tmp = *p1;
*p1++ = *p3;
*p3-- = tmp;
}
p1=p[i]+1;
}
}
}
4、去掉字符串右边的空格
C实现函数:
void func1(char *pStr)
{
// 参数检测
if (pStr == NULL)
return;
while (*pStr++); // 指针定位到字符串最后
pStr = pStr-2; // 指针定位到'\0'前的元素
while(*pStr == ' ') // 从右往左查找第一个非空格元素
{
pStr--;
}
*(pStr+1) = '\0';
}
5、去掉字符串左边的空格
C实现函数:
void func2(char *pStr)
{
// 参数检测
if (pStr == NULL)
return;
char *p1 = pStr;
char *p2 = pStr;
while (*p2 == ' ')
{
p2++;
}
while (*p2 != '\0')
{
*p1 = *p2;
p1++;
p2++;
}
*p1 = *p2;
}
5、去掉字符串左边的空格
C实现函数:
void func2(char *pStr)
{
// 参数检测
if (pStr == NULL)
return;
char *p1 = pStr;
char *p2 = pStr;
while (*p2 == ' ')
{
p2++;
}
while (*p2 != '\0')
{
*p1 = *p2;
p1++;
p2++;
}
*p1 = *p2;
}
6、去掉字符串左边的空格
C实现函数:
void func2(char *pStr)
{
// 参数检测
if (pStr == NULL)
return;
char *p1 = pStr;
char *p2 = pStr;
while (*p2 == ' ')
{
p2++;
}
while (*p2 != '\0')
{
*p1 = *p2;
p1++;
p2++;
}
*p1 = *p2;
}
7、去掉这个字符串中出现次数最少的字符
C实现函数:
void func3(char *pStr)
{
if (pStr == NULL) // 参数检测
return;
char count[256] = {0};
char *p1 = pStr;
while (*p1)
{
count[*p1]++;
p1++;
}
int min = count[pStr[0]]; // 找出现最少的 次数
p1 = pStr;
while (*p1)
{
if (min > count[*p1])
min = count[*p1];
p1++;
}
p1 = pStr;
char *p2 = pStr;
while (*p2)
{
if (count[*p2] != min)
{
*p1 = *p2;
p1++;
}
p2++;
}
*p1 = '\0';
}
8、压缩字符串 (未完成)
C实现函数:
//aaaabbbcssddf ===> a4b3cs2d2f
int zip_string(char*pstr)
{
//类型检查
if(NULL==pstr)
return -1;
char *p1=pstr;
char *p2=pstr+1;
while(*p2)
{
int count=1;
while(*p2==*p1)
{
count++;
p2++;
}
if(count>1)
*(p1+1)=count+'0';
p1=p2;
p2++;
}