#include <stdio.h>
#include <string.h>
typedef struct replace
{
const char * from, * to;
} replace;
char * strreplace( char * str, const replace * replaces)
{
char * s = str;
while ( * s)
{
const replace * r = replaces;
while ( r-> from)
{
int len_from
= strlen ( r
-> from
) ; if ( strncmp ( s
, r
-> from
, len_from
) == 0 ) {
s += len_to - 1 ;
break ;
}
++ r;
}
++ s;
}
return str;
}
int main( void ) {
char string3[ 200 ] = "Hallo, diese Nachricht wird ersetzt. Dieser Quelltext gehoert zu den Systemen." ;
replace replaces[ ] =
{
{ "en" , "x" } ,
{ "x" , "en" } ,
{ "er" , "q" } ,
{ "q" , "er" } ,
{ "y" , "ch" } ,
{ "ch" , "y" } ,
{ "a" , "o" } ,
{ "o" , "a" } ,
{ NULL, NULL }
} ;
printf ( "Vorher: %s\n " , string3
) ;
printf ( "Nachher: %s\n " , strreplace
( string3
, replaces
) ) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCnR5cGVkZWYgc3RydWN0IHJlcGxhY2UKewoJY29uc3QgY2hhciAqZnJvbSwgKnRvOwp9IHJlcGxhY2U7CgpjaGFyKiBzdHJyZXBsYWNlKGNoYXIgKnN0ciwgY29uc3QgcmVwbGFjZSAqcmVwbGFjZXMpCnsKCWNoYXIgKnMgPSBzdHI7Cgl3aGlsZSAoKnMpCgl7CgkJY29uc3QgcmVwbGFjZSAqciA9IHJlcGxhY2VzOwoJCXdoaWxlIChyLT5mcm9tKQoJCXsKCQkJaW50IGxlbl9mcm9tID0gc3RybGVuKHItPmZyb20pOwoJCQlpZiAoc3RybmNtcChzLCByLT5mcm9tLCBsZW5fZnJvbSkgPT0gMCkKCQkJewoJCQkJaW50IGxlbl90byA9IHN0cmxlbihyLT50byk7CgkJCSAgICBtZW1tb3ZlKHMrbGVuX3RvLCBzK2xlbl9mcm9tLCBzdHJsZW4ocytsZW5fZnJvbSkrMSk7CgkJCSAgICBtZW1jcHkocywgci0+dG8sIGxlbl90byk7CgkJCSAgICBzICs9IGxlbl90byAtIDE7CgkJCQlicmVhazsKCQkJfQoJCQkKCQkJKytyOwoJCX0KCQkKCQkrK3M7Cgl9CgkKCXJldHVybiBzdHI7Cn0KCmludCBtYWluKHZvaWQpIHsKICAgIGNoYXIgc3RyaW5nM1syMDBdID0gIkhhbGxvLCBkaWVzZSBOYWNocmljaHQgd2lyZCBlcnNldHp0LiBEaWVzZXIgUXVlbGx0ZXh0IGdlaG9lcnQgenUgZGVuIFN5c3RlbWVuLiI7CiAgICByZXBsYWNlIHJlcGxhY2VzW10gPQogICAgewogICAgCXsgImVuIiwgIngifSwKICAgIAl7ICJ4IiwgImVuIn0sCiAgICAJeyAiZXIiLCAicSJ9LAogICAgCXsgInEiLCAiZXIifSwKICAgIAl7ICJ5IiwgImNoIn0sCiAgICAJeyAiY2giLCAieSJ9LAogICAgCXsgImEiLCAibyJ9LAogICAgCXsgIm8iLCAiYSJ9LAogICAgCXsgTlVMTCwgTlVMTCB9CiAgICB9OwoKICAgIHByaW50ZigiVm9yaGVyOiAlc1xuIiwgc3RyaW5nMyk7CgogICAgcHJpbnRmKCJOYWNoaGVyOiAlc1xuIiwgc3RycmVwbGFjZShzdHJpbmczLCByZXBsYWNlcykpOwoKCXJldHVybiAwOwp9CgoK