添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

C语言 中,字符串的处理是非常重要的一部分,可以说字符串是C语言中最重要的数据类型之一。字符串往往需要进行删除、替换等操作,本文将介绍如何在C语言中删除指定的字符子串。

C语言中实现删除指定的字符子串,可以使用标准库中的函数strchr()和strcpy()等函数。strchr()函数可以用于查找字符串中的指定字符,如果找到了,则返回该字符所在的位置;否则返回NULL。strcpy()函数可以用于将一个字符串复制到另一个字符串中。利用这两个函数,就可以比较简单地实现删除指定的字符子串了。

首先,需要定义一个函数,用于删除指定的字符子串。函数需要接收两个参数,第一个参数是待删除的字符串,第二个参数是指定的字符子串。函数的实现如下:

void deleteSubStr(char *str,char *substr)
    int len1=strlen(str),len2=strlen(substr);
    while(strstr(str,substr))
        int pos=strstr(str,substr)-str;
        for(int i=pos;i<len1-len2;++i)
            str[i]=str[i+len2];
        len1-=len2;
        str[len1]='\0';

在函数中,首先获取待删除字符串的长度len1和指定的字符子串的长度len2。然后使用while循环,查找待删除字符串中的子串。如果找到了,则获取该子串的位置pos。接下来使用一个for循环,将pos+len2之后的所有字符移动到pos之前的位置,覆盖掉指定的字符子串。循环结束后,更新待删除字符串的长度,并在末尾加上字符串终止符“”。

为了方便理解,我们提供一个示例代码,可以直接运行来感受一下删除指定字符子串的效果。示例代码如下:

#include <stdio.h>
#include <string.h>
void deleteSubStr(char *str,char *substr);
int main(void)
    char str[100],substr[100];
    printf("Please input the string:\n");
    scanf("%s",str);
    printf("Please input the sub string to be deleted:\n");
    scanf("%s",substr);
    printf("Before:\n%s\n",str);
    deleteSubStr(str,substr);
    printf("After:\n%s\n",str);
    return 0;
void deleteSubStr(char *str,char *substr)
    int len1=strlen(str),len2=strlen(substr);
    while(strstr(str,substr))
        int pos=strstr(str,substr)-str;
        for(int i=pos;i<len1-len2;++i)
            str[i]=str[i+len2];
        len1-=len2;
        str[len1]='\0';

可以将上述代码复制到代码编辑器中,然后编译并运行。输入待删除的字符串和指定的字符子串,即可看到删除效果。

本文主要介绍了如何在C语言中删除指定的字符子串。使用函数strchr()和strcpy()等函数可以很方便地实现删除操作。此外,本文还提供了示例代码,可以让读者更好地理解删除操作的实现和使用方法。

自己简单训练了下

#include <stdio.h>
#include <string.h>
int main(void)
	char str[100]="abcdefg"; 
	char substr[100]="c";
	int len1=strlen(str),len2=strlen(substr);
	printf("len1:%d,len2:%d\n",len1,len2);
	printf("新字符串的长度等于len1-len2:%d\n",len1-len2);
	int pos=strstr(str,substr)-str;
	printf("pos:%d\n\n",pos);
	for(int i=pos;i<len1-len2;i++){
		printf("%d\n",i);
        str[i]=str[i+len2];//将pos+len2之后的所有字符移动到pos之前的位置,覆盖掉指定的字符子串 
    len1-=len2;//更新新字符串长度 
    str[len1]='\0';//末尾添加\0 
    puts(str);