codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#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; }
Private
[
?
]
Run code
Submit