C语言之字符串常用操作
字符串逆序
实现方法:通过strlen函数获得字符串的长度(也可以使用while循环获得),然后通过len/2将len/2这个下标的前后的元素交换(如果len/2是偶数也就相当于最后两个元素交换),代码如下:
void StrReverse(char *str)
{
int len,i;
char t;
if (str==NULL)
{
return ;//保证字符串不为空
}
len=strlen(str);
for(i=0;i<len/2;i++)
{
t=str[i],str[i]=str[len-1-i],str[len-i-1]=t;
}
}
判断回文字符串
实现方法:通过通过strlen函数获得字符串的长度(也可以使用while循环获得),然后定义一个i变量指向字符串的首元素,定义一个j指向字符串的尾元素。在i<j的条件下,如果i指向空格字符,则加一,如果j指向空格字符则建议,直到指向非空格为止。然后比较i和j指向元素,如果不同则直接返回0,相同就再次执行上述步骤。如图:
代码如下:
int Judge(char *str)
{
int len,i,j;
len=strlen(str);
i=0,j=len-1;
while (i<j)
{
while (str[i]==' ')
{
i++;
}
while (str[j]==' ')
{
j--;
}
if (str[i]==str[j])
{
i++,j--;
}
else
{
return 0;
}
}
return 1;
}
统计字符串中单词的个数
实现方法:要判断一个单词需要满足如下条件:
单个字符要是字母,即str[i]在a到z和A到Z的范围之内
str[i]的下一个元素要是空格或者是结束符号’\0’
int sum(char *str)
{
int i,n=0;
for(i=0;str[i]!='\0';i++)
if(((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))&&(str[i+1]==' '||str[i+1]=='\0')) //注意观察条件
n++;
return n; //返回值是单词个数
}
将字符串转换为整数
实现方法:用一个sum变量来存储每次将字符元素加进去的值(记得要初始化),在字符串中存储的数字是字符型,我们将其转化为整型,通过减去一个’0’来将其转化为整型。此外,我们还需考虑到负数的情况,加个特判就行了。代码如下:
int change(char *str)
{
int i,sum=0;
for(i=0;str[i]!='\0';i++)
{
if(str[i]=='-')
continue;
else
{
sum=sum*10+(str[i]-'0');
}
}
if (str[0]=='-')
return -sum;
else
return sum;
}
按字典方式排序
实现方法:使用二维数组存放单词,使用冒泡排序,使用strcmp比较大小,使用strcpy函数给字符串赋值(注意字符串不能用等于号赋值)代码如下:
void sort(char str[][N],int n) //n表示单词的个数
{
int i,j;
char t[N];
for(i=0;i<n-1;i++)//冒泡排序
{
for(j=0;j<n-1-i;j++)
{
if(strcmp(str[j],str[j+1])>0)
{
strcpy(t,str[j]);
strcpy(str[j],str[j+1]);
strcpy(str[j+1],t);
}
}
}
}
暂时就先写这些,如果发现错误请读者指正,大家共同进步。