重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
我理解你的r是指向了字符'a',v是指向字符'g'
创新互联专业为企业提供南乐网站建设、南乐做网站、南乐网站设计、南乐网站制作等企业网站建设、网页设计与制作、南乐企业网站模板建站服务,十载南乐做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
void fun(char s[],int r,int v)
{
int pos = 0; //用来存放字符串的个数
int count = 0; //用来计算删除'#'的个数,已被循环所用;
while *(s+pos) != '\0') //此循环计算字符串的长度
{
pos++;
}
for (int i=r; i=v-count; i++) //从字符串'a'的位置开始循环比较,
{ //循环到字符串'g'的位置,因为中间
if (s[i] == '#') //要删除'#'所以循环的次数也要改变
{
for (int j=i; jpos-count; j++)//此循环就是删除两地之间的'#'
{ //进行依次后一个字符补替前
s[j] = s[j+1]; //一个字符
}
count ++; //删除的个数要进行更新
i--; //假如删除了'a'后面的'#'
} //从'b'开始后面的字符串就往
} //前移,'b'就占住了删除的'#'
} //i--就是为了下一次循环从'b'
//比较
void fun
{char s,char *t,int i,n,j;
while (*t){n++;t++;}
for(i=0;i++;in-1;)
if (*t='*')
{for (j=i;jn-1;j++)
现在有一串字符需要输入,规定输入的字符串中只包含字母和*号。请用C语言编写程序,实现以下功能:除了字符串前后的*号之外,将串中其他的*号全部删除。
例如,假设输入的字符串为****A*BC*DEF*G********,删除串中的*号后,字符串变为****ABDEFG********
该问题需要对字符串进行操作,而在C语言中没有专门的字符串变量,因此如果需要将一个字符串存放在变量中,则必须使用字符数组,即使用一个字符型数组来存放一个字符串,数组中的每一个元素存放一个字符。
C语言如何删除字符串前后星号?
C语言/C++学习请加:556791282群内有更多资料哦!
算法分析
设置两个指向字符的指针变量t和f。先使用循环语句让t指针指向字符串中最后一个字符,而f指针指向字符串中第一个字符;再判断t和f指向的字符是否为“*”,如果为“*”,则t指针自减,f指针自增,直到遇到第一个不是的字符为止。
再定义一个函数fun()用于删除字符串中的“*”号,同时保留字符串前后的“*”号。
下面是完整的代码:
#include stdio.h
int fun(char *a, char *h, char *p)
{
int i, j;
/*删除指针h与p之间的所有“*”*/
for(i=0,j=0; h[i]p; i++)
if(h[i]!='*')
h[j++]=h[i];
/*将指针p至字符串尾部的所有字符前移*/
for(i=0; p[i]; i++,j++)
h[j]=p[i];
h[j]='\0'; /*在字符串尾部添加结束标志*/
return 0;
}
int main( )
{
char s[81], *t, *f;
printf("Enter a string :\n");
gets(s); /*输入字符串*/
t=f=s; /*用字符指针t、f指向串s*/
while(*t)
t++;
t--; /*将指针t定位到字符串中最后一个字符*/
while(*t == '*') /*指针t指向字符串中最后一个字符*/
t--;
while (*f == '*') /*指针f指向字符串中第一个字符*/
f++;
fun(s, f, t);
printf("The string after deleted:\n"); /*输出结果*/
puts(s);
return 0;
}
运行结果:
Enter a string :
****A*BC*DEF*G********
The string after deleted:
****ABCDEFG********
C语言学习其实并不难,只要你有决心,够努力,就会成功。想免费学习的可以加脱线下面得号!
#include stdio.h
void fun(char *a, char *p)
{char *b;
for(b=a;a=p;a++)
if(*a!='*')*b++=*a;
for(;*b++=*a++;);
}
main()
{char s[81],*t;
printf("Enter a string:\n");
gets(s); t=s;
while(*t)t++;
t--;
while(*t=='*')t--;
fun(s , t);
printf("The string after deleted:\n");
puts(s);
}