当前位置:首页 » 网络管理 » 指针字符串如何删除
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

指针字符串如何删除

发布时间: 2022-12-26 20:56:46

⑴ C++使用指针法将一个字符串中的某一个指定字符删除掉


#include<iostream>

voiddel_char(char*str,charc)
{
char*p=str,*q=str;
for(;*q!='';q++)
{
if(*q!=c)
*p++=*q;
}
*p='';
return;
}

intmain()
{
charszTest[]="abc,defg";
printf("去除字符前:%s ",szTest);

del_char(szTest,',');
printf("去除字符后:%s ",szTest);

return1;
}


c语言,使用指针法,删除字符串的所有尾部空格。

int
main()
{
char
str[256];
gets(str);
int
n
=
strlen(str);
if(n<=0)
return
0;
char
*p
=
str;
p
+=
n-1;
//把p的指针移动到字符串的末尾
while(*(--p)=='
')
{
*p
=
'\0';
}
//指针由末尾向前移动,遇到空格就把空格替换成'\0',也就是字符串的结束符
puts(str);
return
0;
}

⑶ C语言指针删除字符串

#include<stdio.h>
#include<string.h>
intmain()
{
charstr[]="ABCDEFGHIJK",*p=NULL,*p1=NULL;
intn,m,len=strlen(str);
printf("原字符串:%s ",str);
printf("从第n个字符开始的删除m个字符,请输入n,m的值:");
scanf("%d%d",&n,&m);
p=str+n-1;
*p=0;
p1=p+m;
strcat(str,p1);
len=len-m;
str[len]=0;
printf("删除后的字符串为:%s ",str);
return0;
}

⑷ 用指针与字符串 一行字符串中删去指定的字符

#include<stdio.h>

#include<stdlib.h>

intmain()

{

chara[100],b;

char*p;

printf("请输入一个字符串:");

gets(a);//输入字符串.

printf("请输入需要删除的字符:");

b=getchar();//输入字符.

p=a;

while(*p!='')//判断是否为结束符.

{

if(*p==b)//判断该字符是否为需要删除的字符.

{

while(*p!='')

{

*p=*(p+1);//将后面的字符赋给前面.

p++;

}

break;//找到一个后退出循环.

}

p++;//检查下一个字符.

}

printf("删除%c的结果为:%s",b,a);

system("pause");

return0;

}

⑸ C语言如何实现删除字符串中的字符

C语言删除字符串中指定字符可以参考下面的代码:

#include<stdio.h>

int main

{

char * fun(char * s);

char arg[] = "hello.cgi?name1=value1&name2=value2";

printf("This value :%s ",fun(arg));

getchar();

return 0;

}

char * fun(char * s)

{

char *s1 = s; //s1指向字符串首地址

while ((*s != '?') && (*s != 0)) //字符不为结束符或者不为?,指向下一个字符

s++;

*s = 0; //将这个字符置为结束符

return s1;

};

(5)指针字符串如何删除扩展阅读:

C语言isupper()函数:判断一个字符是否是大写字母

C语言isspace()函数:判断一个字符是否是空白符

C语言isprint()函数:判断一个字符是否是可打印字符

C语言islower()函数:判断一个字符是否是小写字母

C语言ldexp()函数:返回x乘以2的exponent次方(次幂)的值

C语言ldiv()函数:求两个数的商和余数(针对long类型)

C语言ceil()函数:求不小于x的最小整数(向上取整)

C语言floor()函数:求不大于x的最大整数(向下取整)

double atof(char *nptr) 将字符串nptr转换成浮点数并返回这个浮点数

double atoi(char *nptr) 将字符串nptr转换成整数并返回这个整数

⑹ 指针 c语言 删除字符串的一部分

代码感觉有点别扭,逻辑上确实比较难理解,是哪里的代码?说明如下,好像也不太好解释

1.前面应该有#defineNUL''

2.match函数的功能是比较第一个字符串与第二个字符串的包含关系,功能是:如果第一个字符串的第一个字符开始且第一个字符串包含第二个字符串则返回相同字符后面一个字符的地址(例如:“abc”和“ab”则返回'c'字符地址;如果:“ab”和“ab”则返回‘b’后的地址即指向''的那个地址);其他情况都返回NULL(空)地址。

问题1:如果str="abcd"want="bc"比较第一个字符a和b是不相等就已经退出函数返回NULL指针,而不会再继续比较!

问题2:match函数返回值是字符数组的地址,或空,具体见上述2的内容

问题3:find++的作用是移动str的指针直到出现和substr内容相同的一段字符串出现为止(例如:“abc”和“bc”则把指针移到“abc”的'b'位置)

问题4.while表达式中赋值语句是为了把相同字符串后的字符串赋给find(例如:“abcd”和“bc”通过del_substr()函数,首先通过第一个while的语句把指针移到“abcd”的'b'位置,然后通过后面的.while表达式中赋值语句把'd'和''赋给原来“abcd”中“bc”位置最后str变成'a''d''''d',结果就是“ad”相当删除了“bc”)

为了便于理解看下面代码:

#include<stdio.h>
#include<string.h>
#defineNUL''
#defineFALSE0
#defineTRUE1
char*match(char*str,char*want)
{
while(*want!=NUL)
if(*str++!=*want++)
returnNULL;
returnstr;
}
intdel_substr(char*str,char*substr)
{
char*next;
char*find=str;
while(*find!=NUL)
{
next=match(find,substr);
if(next!=NULL)
break;
find++;
}
if(*find==NUL)
returnFALSE;
while(*find++=*next++);
returnTRUE;
}
intmain()
{
charstr[20]="abc";
charsubstr[20]="bc";
printf("当str="%s",",str);
del_substr(str,substr);
printf("substr="%s"时,结果是:"%s" ",substr,str);
strcpy(str,"bc");
strcpy(substr,"bc");
printf("当str="%s",",str);
del_substr(str,substr);
printf("substr="%s"时,结果是:"%s" ",substr,str);
strcpy(str,"bcd");
strcpy(substr,"bc");
printf("当str="%s",",str);
del_substr(str,substr);
printf("substr="%s"时,结果是:"%s" ",substr,str);
strcpy(str,"abcbc");
strcpy(substr,"bc");
printf("当str="%s",",str);
del_substr(str,substr);
printf("substr="%s"时,结果是:"%s" ",substr,str);
strcpy(str,"bc");
strcpy(substr,"abc");
printf("当str="%s",",str);
del_substr(str,substr);
printf("substr="%s"时,结果是:"%s" ",substr,str);
return0;
}

⑺ C语言 指针 删除字符串的一部分 在线等

代码如下::

#include<stdio.h>

int del_substr(char *str,char *substr )
{
int count=0,count1=0,i,j=0,k;
char *s;
char *s1;
s=str;
while((*s)!='\0')//求源字符串的长度
{
count++;
s++;
}

s1=substr;
while((*s1)!='\0')//求子字符串的长度
{
count1++;
s1++;
}

s=str;
s1=substr;
//printf("%4d%4d\n",count,count1);
for(i=0;i<count;i++)
{

for(;j<count1;)
{
if(*(str+i)==*(substr+j))//字符串否匹配
{
j++;
break;
}

else//字符串不否匹配
{
j=0;
break;
}

}

if(j==count1)//说明找到要删除的字符串
{
//printf("i=%d\n",i);
for(k=i-count1+1;k<count-count1;k++)
str[k]=str[k+count1];
str[count-count1]='\0';

return 1;

break;

}
}

if(i>=count)//说明把源字符串遍历完了,都没有发现!!
return 0;

}

void main()
{

char str[50];
char substr[20];

printf("请输入源字符串和子字符串\n");
scanf("%s%s",str,substr);

if(del_substr(str,substr )==1)
{
printf("找到要删除的字符串\n");
printf("删除后的字符串为:%s\n",str);

}
else
printf(" 没有找到要删除的字符串!!!\n");

}

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

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

2、其次就是要定义两个相同容量的字符串储存的变量chara[100];charb[100];。以及整数变量intc;inti=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、最后就给大家完整的看一下整体的一个代码流程。

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

你好!

  • p,q是指针,*p,*q表示p,q指向的地址储存的字符

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

根据程序来说:

for(p=s,q=s;*p!='';p++)
if(*p!=del_x)
*q++=*p;
*q=*p;
puts(s);
  • 首先,p作为循环下标,从s字符串的第一位到最后一位判断是否为删除的字符

  • 其次,q作为新字符串s的下标,对于每一位非删除字符,保存下来,q下标+1等待下一个字符

  • 最后,退出循环时p指向的是空字符,q还在等待新字符,这时将*p赋给*q表示新字符串结束,然后puts输出

如果还没有理解的话可以用实例来分析一下,对于字符串 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]=''

  • 循环开始时,p = 0,q = 0,到*p='',即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',需要删除,则不记录

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

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

  • p = 6,q = 4,此时*p=s[6]='',退出循环

此时*q = *p,即s[4] = ''表示字符串结束,最后新字符串s = “bcbc”