用另一个字符串剪掉字符串的一部分

时间:2015-06-29 15:32:33

标签: c string

我得到了C程序的这一部分:

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

int main(void){
    char *mRNA = spleissen("AUAGUAAAAGCUCUGUUUAGGAGA", "GU", "AG");
    printf("mRNA: %s\n", mRNA);
    free(mRNA);
    return 0;
}

我必须编写函数spleissen,它应该是这样的:它会剪切一个从GUAG的字符串以及这两者之间的所有内容。所以程序输出是:

mRNA: AUACUCUGAGA

我真的不知道如何把这些部分剪掉。

我不允许使用stdiostringstdlib以外的其他内容。

2 个答案:

答案 0 :(得分:0)

char *spleissen(const char *src, const char *start, const char *end){
    size_t len = strlen(src);
    char *s, *e, *ret, *work;

    ret = work = malloc(len + 1);
    strcpy(work, src);
    len = strlen(end);

    while(s = strstr(work, start)){
        if((e = strstr(s, end))==NULL)
            break;//delete upto last?
        memmove(s, e + len, strlen(e+len)+1);
        work = s;
    }
    return ret;
}

答案 1 :(得分:-1)

我认为你可以这样做:

char *spleissen(char *array, char *G, char *A)
{
    int l=strlen(array);
    int i, j=0;
    char returnstr[10010];
    int b=0;

    for(i=0; i<l; i++)
    {
        if(G[0]==array[i] && G[1]==array[i+1])
        {
            b=1, i++;
            continue;
        }
        else if(A[0]==array[i] && A[1]==array[i+1] && b==1)
        {
            b=0, i++;
            continue;
        }

        if(b==0)
        {
            returnstr[j]=array[i];
            j++;
        }
    }
    return returnstr;
}