當前位置:首頁 » 網路管理 » 指針字元串如何刪除
擴展閱讀
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」