c语言怎么删掉字符串的前几个字符

 我来答
帐号已注销
2020-11-18 · TA获得超过1.4万个赞
知道大有可为答主
回答量:8963
采纳率:90%
帮助的人:287万
展开全部
现在有一串字符需要输入,规定输入的字符串中只包含字母和*号。请用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语言学习其实并不难,只要你有决心,够努力,就会成功。想免费学习的可以加脱线下面得号!
THX_吴
2017-03-22 · TA获得超过327个赞
知道小有建树答主
回答量:370
采纳率:0%
帮助的人:143万
展开全部
#include <stdio.h>
void del_chr( char *s, char ch )
{
char *t=s; //目标指针先指向原串头
while( *s != '\0' ) //遍历字符串s
{
if ( *s != ch ) //如果当前字符不是要删除的,则保存到目标串中
*t++=*s;
s++ ; //检查下一个字符
}
*t='\0'; //置目标串结束符。
}
void main()
{
char str[]="***abcde***fghi***" ;
del_chr(str, '*' );
printf("str=【%s】\n", str );
}
上面是删除的一个简单例子,具体详细的删除操作可以参考这篇博文http://blog.csdn.net/hellotianchao/article/details/53144936
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式