C语言,利用指针编写程序:删除一个字符串中的某一个字符

 我来答
刺友互
高粉答主

2019-07-06 · 每个回答都超有意思的
知道答主
回答量:3979
采纳率:100%
帮助的人:73.4万
展开全部

1、其实头函数每个都需要用到的就是#include <stdio.h>,因为程序里面涉及到了输出和输入字符串以及字符。#include <string.h>。

2、其次就是要定义两个相同容量的字符串储存的变量 char a[100];  char b[100];。以及整数变量 int c;  int i=0,j=0; 其中a[100]是存字符串的,b【100】是存你删除对应字符的字符串的,整数C是你想删除第几位。j ,i 是后面for循坏中要使用到的变量。

3、 printf("请输入你的字符串");  scanf("%s",a);  printf("请输入你想要删除第几位字符");  scanf("%d",&c)。

4、 for(i=0;i<strlen(a);i++)  {       if(i+1!=c)       {        b[j]=a[i];        j++;       }                  }          printf(" %s",b);        }  。

5、只要当i+1不等于c时把a【i】里面的字符赋给b【i】,那么这样当i+1=c时不把它赋给b【i】从而实现删除功能。

6、最后就给大家完整的看一下整体的一个代码流程。

帐号已注销
2021-06-22 · TA获得超过77.1万个赞
知道小有建树答主
回答量:4168
采纳率:93%
帮助的人:167万
展开全部

p,q是指针,*p,*q表示p,q指向的地址储存的字符。++是自增运算符,*q++=*p表示将当前p指向的地址储存的值赋值给q指向的地址,赋值完成后q++,即q指向下一位地址。

如果还没有理解的话可以用实例来分析一下,对于字符串s=“abcabc”,删除字符‘a’,简单设s起始位置为0,则s[0]='a',s[1]='b',s[2]='c',s[3]='a',s[4]='b',s[5]='c',s[6]='\0'

循环开始时,p=0,q=0,到*p='\0',即p=6时结束,p每次+1

p=0,q=0,此时*p=s[0]='a',需要删除,则不记录

p=1,q=0,此时*p=s[1]='b',不需删除,记录*q即s[0]='b',q=q+1

p=2,q=1,此时*p=s[2]='c',不需删除,记录*q即s[1]='c',q=q+1

p=3,q=2,此时*p=s[3]='a',需要删除,则不记录

字符串在存储上类似字符数组

它每一位单个元素都是能提取的,字符串的零位是它的长度,如s[0]=10,这提供给我们很多方便,例如高精度运算时每一位都能转化为数字存入数组。

通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。

设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。

以上内容参考:百度百科-字符串

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
乐跑小子
2016-01-16 · TA获得超过1.5万个赞
知道大有可为答主
回答量:1.1万
采纳率:7%
帮助的人:4728万
展开全部

#include<stdio.h>
int main()
{
char s[100],*p ,*q ;
puts("输入小于100个字符:");
gets(s);
char del_x;
printf("输入要删除的字符:");
scanf("%c",&del_x);
for(p=s,q=s;*p!='\0';p++)
  if(*p!=del_x)*q++=*p;
*q=*p;
puts(s);
return 0;
}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
2010_liury
推荐于2018-02-26 · TA获得超过115个赞
知道答主
回答量:9
采纳率:0%
帮助的人:0
展开全部
#include <stdio.h>

void fun(char *p,char ch)
{
char *pch;
while (*p!='\0')
{
if (*p==ch) //相同时
{
for (pch=p;*pch!='\0';pch++) //字符前移
*pch=*(pch+1);
}
p++;
}
}
void main()
{
char a[]="hello world";
char ch;
scanf("%c",&ch);
fun(a,ch);
printf("%s",a);
}
不知道你是不是这个意思?
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式