C语言中如何通过函数实现从给定字符串中删除指定字符串?谢谢各位帮忙

C语言中如何通过函数实现从给定字符串中删除指定字符串?谢谢各位帮忙,第1张

char DelStr(char str1, char str2)

{

int i,j;

int iLen1,iLen2;

int iFlag,iPos;

char s1[128+1],s2[128+1];

memset(s1,0x00,sizeof(s1));

memset(s2,0x00,sizeof(s2));

strcpy(s1,str1);

strcpy(s2,str2);

iLen1 = strlen(s1);

iLen2 = strlen(s2);

for(i = 0;i<=iLen1 - iLen2;i++)

{

iFlag = 0;

iPos = i;

for(j = 0; j< iLen2; j++,iPos++)

{

if(s1[iPos] != s2[j])

{

iFlag = 1;

break;

}

}

if(iFlag == 0)

{

memmove(s1+i,str1+i+iLen2,iLen1-iLen2);

s1[iLen1-iLen2] = 0;

iLen1 = strlen(s1);

}

}

return(s1);

}

#include <stdioh>

void fun(char p){

int i,j;

char q,z,m;

while(p!=0){

if(p>='0' && p<='9'){

z=p+1;

while(z!=0){

if(z>='0' && z<='9'){

}else{

p=z;

m=p;

z='1';

break;

}

z++;

}

}

p=p+1;

}

(m+1)=NULL;

}

int main() {

char a[1000];

gets(a);

fun(a);

printf("%s\n",a);

return 0;

}

trim是修剪、整理的意思。

各种 trim 函数的语法如下:

LTRIM(字串):将字串左边的空格移除。

RTRIM(字串): 将字串右边的空格移除。

TRIM(字串): 将字串首尾两端的空格移除,作用等于RTRIM和LTRIM两个函数共同的结果。

ALLTRIM(字串):将字串左右边两边的空格移除。

在EXCEL中,TRIM函数主要用于把单元格内容前后的空格去掉,但并不去除字符之间的空格。如果单元格中有从其他程序中获得带有不规则空格的文本是,可以使用TRIM函数。

1 如下图所示,在B1中录入TRIM(A1),可以看到,B1中还是A1单元格内容,只是前面空格去除了,但是中间的单元格依然在。向下拉,既可以把整个A列单元格中前后无用的单元格去掉了。如下图所示,BW在B1中录入TRIM(A1),可以看到,B1中还是A1单元格内容,只是前面空格去但是中间的单元格依然在。向下拉,既可以把整个A列单元格中前后无用的单元格去掉了。

2如果是想要去掉所有的空格,需要用substitute函数。如图所示:

3如果单元格里的数据或文本同时带无意义空格和空白行,那么也可以用公式:= Clean(trim()) 嵌套就可以直接删除了。

4TRIM函数作为辅助函数,还有另外一种用法,如图在A1中(A1常规状态)录入12位以上数字,A1就会以科学计数的方式显示出来,这不是我们想要的结果,我们想要B1所示的结果,这时, 我们在B1单元格输入公式:=TRIM(A1),回车,就可以看到全部显示出来了。

5当然,我们也可以更改单元格格式为:数字,或者自定义格式“0”,都可以显示,如图:

6下面,我们再来学习一下TRIM的另一种用法---和MID函数结合提取有用的信息,如图,在B1中需要提取A1单元格中的生产年限,我们可以在B1单元格中录入公式:TRIM(MID(A1,FIND("",A1),4)),就可以得到想要的结果。

//程序功能:编写一个函数delchar(s,c),该函数将字符串s中出现的所有c字符删除。

//          在主程序中输入一个字符c和一个字符串s,调用delchar(s,c)函数删除字符串s中

//          所有的c字符,然后输出删除后的字符串。

//例    如:输入字符a和字符串li wang zha jin xiao,输出:li wng zh jin xio。

//提    示:除在指定位置添加语句之外,请不要改动程序中的其他内容。

#include <stdioh>

#include <stringh>

void main( )

{

    char c, str[80];

void delchar(char p,char c);

    printf("Input a char: ");

    scanf("%c",&c);   //读入一个字符

    printf("Input a strings: ");

    scanf("%s",str);

    //请在两条星线间填入代码, 调用delchar函数删除字符串str中所有c字符

//

delchar(str,c);

//

printf("The result is: %s \n", str);

}

void delchar(char p, char c)

{

    int i, k;

    char str[80], q;

q=str;

    //请在两条星线间填入代码, 删除指针p指向的字符串中所有的c字符

//要求:利用指针方法来处理。

//

i=0;k=0;

while((p+i)!='\0'){

if((p+i)!=c){

(q+k)=(p+i);

k++;

}

i++;

}

(q+k)='\0';

strcpy(p,q);

//

}

运行结果

trim函数的作用是删除文本的字符。

trim()函数移除字符串两侧的空白字符或其他预定义字符。功能除去字符串开头和末尾的空格或其他字符。函数执行成功时返回删除了string字符串首部和尾部空格的字符串,发生错误时返回空字符串("")。

说明

TRIM函数设计用于清除文本中的7位ASCII空格字符(值32)。在Unicode字符集中,有一个称为不间断空格字符的额外空格字符,其十进制值为160。该字符通常在网页中用作HTML实体。

TRIM函数本身不删除此不间断空格字符。其他编程语言中也具有TRIM函数,如SQL中的TRIM函数是用来移除掉一个字串中的字头或字尾。最常见的用途是移除字首或字尾的空白。这个函数在不同的资料库中有不同的名称。

只要将对应位置设置为\0即可 

方便起见,可以写一个宏 

del_char_from_end(s,n) s[strlen(s)-n]=0

这样就可以了 从字符串s尾部,删除n个字符 不过你要保证n比字符串长度要小 不然会越界 

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/13496153.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-09-01
下一篇2025-09-01

发表评论

登录后才能评论

评论列表(0条)

    保存