C语言之字符串常用操作

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

暂时就先写这些,如果发现错误请读者指正,大家共同进步。

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青衫与白杉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值