[ create a new paste ] login | about

Link: http://codepad.org/3a4Ibhds    [ raw code | output | fork ]

anmartex - C, pasted on Oct 23:
#include <stdio.h>

//-----------------------------------------------------------------------------
int isAlnum(int ch) {
    return ((('a' <= ch) && (ch <= 'z'))
            || (('A' <= ch) && (ch <= 'Z'))
            || (('0' <= ch) && (ch <= '9')));
}
//-----------------------------------------------------------------------------
int getWord(char* str, char** begin, char** end) {
    for (; *str && !isAlnum(*str); ++str) { ; }
    *begin = str;

    for (; *str && isAlnum(*str); ++str) { ; }
    *end = str;

    return (*end - *begin);
}
//-----------------------------------------------------------------------------
void strSet(char* str, char ch, unsigned size) {
    while (size--) {
        *str++ = ch;
    }
}
//-----------------------------------------------------------------------------
int strCmp(const char* str1, const char* str2, int size) {
    while (size && *str1 && *str2 && (*str1++ == *str2++)) {
        size--;
    }
    return (size == 0);
}
//-----------------------------------------------------------------------------
int strLen(const char* str) {
    const char* p;
    for (p = str; *p; ++p) { ; }
    return (p - str);
}
//-----------------------------------------------------------------------------
char* strChrRemove(char str[], char ch) {
    int offs = 0;
    char* p;
    for (p = str; *p; ++p) {
        if (*p == ch) {
            offs++;
        }
        else {
            *(p - offs) = *p;
        }
    }
    *(p - offs) = 0;
    return str;
}
//-----------------------------------------------------------------------------
char* wordRemove(char text[], const char word[]) {
    const char REPLACED_CHAR = 1;
    char* str = text, * begin, * end;
    int len, lenWord = strLen(word);

    while ((len = getWord(str, &begin, &end))) {
        if ((len == lenWord) && strCmp(begin, word, len)) {
            strSet(begin, REPLACED_CHAR, len);
        }
        str = end;
    }

    return strChrRemove(text, REPLACED_CHAR);
}
//-----------------------------------------------------------------------------

int main() {
    char text[] = "this is program delete word 'program'.";
    char word[] = "program";

    printf("%s\n", wordRemove(text, word));

    return 0;
}


Output:
1
this is  delete word ''.


Create a new paste based on this one


Comments: