C语⾔递归删除字符串
指定删除并压缩字符串
函数void dele(char *s)的功能是删除字符串s中所有的数字字符和⾮字母字符,并将字符串压缩。假设字符串最多不超过100个
例如原字符串为adc#@123ABC,则输出结果为abcABC
思路:可以将所有字母字符重新输⼊到新的字符串⾥,最后输出新的字符串;
也可以正向将不符合条件的字符出来使得a[i]=a[i+1],只要存在错误码就递归执⾏ 。
以下是第⼆种思路的代码:
#include <stdio.h>
#include <stdlib.h>
#define LEN 100
void dele(char * s)
{
int nErr = 0; //定义nErr记录错误字符
for(int i=0,j=0;s[i]!=0;i++) //遍历字符串
{
if (s[i] < 'A' || s[i] > 'Z'&&s[i]<'a'||s[i]>'z')  //检测到错误码
{
//printf("%c\n", s[i]);
j = i;
while (s[j]!=0)
{
s[j] = s[j + 1];
j++;
}
//printf("改变后的字符串是%s\n", s);
nErr++;  //错误码的个数+1
}
}
//printf("执⾏完⼀次删除函数结果%s\n", s);
if(nErr!=0)  //只要存在错误码就要递归执⾏此函数
dele(s);
}
int main(void)
{递归函数c语言规则
char nAry1[LEN] = {0};
printf("请输⼊原字符串:\n");
scanf_s("%s", nAry1,LEN);
dele(nAry1);
printf("最后结果%s",nAry1);
system("pause");
return 0;
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。