介绍
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 { str[i]=str[i+len2]; } len1-=len2; str[len1]='\0'; } } 在函数中,首先获取待删除字符串的长度len1和指定的字符子串的长度len2。然后使用while循环,查找待删除字符串中的子串。如果找到了,则获取该子串的位置pos。接下来使用一个for循环,将pos+len2之后的所有字符移动到pos之前的位置,覆盖掉指定的字符子串。循环结束后,更新待删除字符串的长度,并在末尾加上字符串终止符“”。 示例 为了方便理解,我们提供一个示例代码,可以直接运行来感受一下删除指定字符子串的效果。示例代码如下: #include #include 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 { str[i]=str[i+len2]; } len1-=len2; str[len1]='\0'; } } 可以将上述代码复制到代码编辑器中,然后编译并运行。输入待删除的字符串和指定的字符子串,即可看到删除效果。 总结 本文主要介绍了如何在C语言中删除指定的字符子串。使用函数strchr()和strcpy()等函数可以很方便地实现删除操作。此外,本文还提供了示例代码,可以让读者更好地理解删除操作的实现和使用方法。 自己简单训练了下 #include #include 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 printf("%d\n",i); str[i]=str[i+len2];//将pos+len2之后的所有字符移动到pos之前的位置,覆盖掉指定的字符子串 } len1-=len2;//更新新字符串长度 str[len1]='\0';//末尾添加\0 puts(str); }