C语言中的remstr函数

C语言中的remstr函数,c,string,removeall,C,String,Removeall,我想创建一个名为remstr()的函数。此函数用于从另一个字符串中删除给定字符串,而不使用string.h。例如: str1[30]= "go over stackover" str2[20]= "ver" strrem[20]= "go o stacko" 请帮助我C为您提供了许多有用的构建块。特别是,可以使用三个标准库函数构建此函数:strstr(查找要删除的字符串)、strlen计算字符串其余部分的长度,以及memcpy将不希望删除的部分复制到目标中(如果希望函数在适当位置运行,则

我想创建一个名为
remstr()
的函数。此函数用于从另一个字符串中删除给定字符串,而不使用
string.h
。例如:

 str1[30]= "go over stackover"
 str2[20]= "ver"
 strrem[20]= "go o stacko"

请帮助我

C为您提供了许多有用的构建块。特别是,可以使用三个标准库函数构建此函数:
strstr
(查找要删除的字符串)、
strlen
计算字符串其余部分的长度,以及
memcpy
将不希望删除的部分复制到目标中(如果希望函数在适当位置运行,则需要使用
memmove
而不是
memcpy
)。所有三个函数都在
中声明


尝试编写函数,并在遇到问题时询问具体问题。

伪代码对于您想要做的事情非常简单,如果您不能使用
string.h
函数,则只需重新创建它们

#include <stdio.h>
#include <stdlib.h>

void remstr(char *str1, char *str2, char *strrem)
{
    char *p1, *p2;
    if (!*str2) return;
    do {
        p2 = str2;
        p1 = str1;
        while (*p1 && *p2 && *p1==*p2) {
            p1++;
            p2++;
        }
        if (!(*p2)) str1 = p1-1;
        else *strrem++ = *str1;
    } while(*str1 && *(++str1));
    *strrem = '\0';
}


int main() {

    char str1[30]= "go over stackover";
    char str2[20]= "ver";
    char strrem[30];
    remstr(str1, str2, strrem);
    printf("%s\n",strrem);
}
char * remstr(char *str1, char * str2)
{
    get length of str1
    get length of str2
    for(count from 0 to length of str2 - length of str1) {
       if ( str1[count] != str2[count])
          store str2[count] in to your new string
       else
          loop for the length of str1 to see if all character match
            hold on to them in case they don't and you need to add them into you
            new string
    }
    return your new string
}
您需要了解详细信息,
remstr()
是否为新字符串分配内存?它是否接受现有字符串并进行更新?字符串的前哨字符是什么

您需要一个
strlen()
才能使其正常工作,因为您无法使用它,所以您需要制作如下内容:

int mystrlen(char* str) {
    while not at the sentinel character
      increment count
    return count
}

与替换一样?查看有关strstr()或memmemmem()的详细手册,当被要求从“bololola”中删除“lol”时,您希望此函数做什么?我不需要使用string.h库函数您的意思是您不想使用?请看前面答案中的注释,它不能使用
string.h
对不起:)是,我不想使用string.hlibrary@JulioSezar我更新了答案。不再使用任何
string.h
int mystrlen(char* str) {
    while not at the sentinel character
      increment count
    return count
}