Hi!
Hat jemand zufällig eine str_replace Funktion in c oder kann sowas schreiben?
Ich würde halt gerne den String und die zu suchenden und die ersetzende Zeichenfolge übergeben und die Funktion soll den String so verändern, dass halt die zu suchenden Zeichenfolgen alle durch die ersetzende Zeichenfolge ersetzt wird.
Bevor ich mir damit das Gehirn verdrehe, dachte ich mir, ich frage einfach mal nach...
Gruß,
Gerti
str_replace
- Gerti
- Nicht mehr bei Topfield-Europe
- Beiträge: 15740
- Registriert: Fr 9. Dez 2005, 00:16
- Receivertyp: Vu+ Uno 4k
- Wohnort: Hürth
- Kontaktdaten:
AW: str_replace
Hi!
Du meinst für reguläre Ausrücke?!
Klar, kann ich genauso gebrauchen, auch wenn reguläre Ausdrücke nicht meine Spezialität sind...
Gruß,
Gerti
Du meinst für reguläre Ausrücke?!
Klar, kann ich genauso gebrauchen, auch wenn reguläre Ausdrücke nicht meine Spezialität sind...
Gruß,
Gerti
- xyzzyx
- TAPPortierer
- Beiträge: 2099
- Registriert: Sa 6. Jun 2009, 18:35
- Receivertyp: SRP-2100 (TMS), **** Duo²
- Receiverfirmware: verschiedene
- Kontaktdaten:
AW: str_replace
Hi,
habe nur eine, die bestimmte Zeichen durch Unterstriche ersetzt. Ist wahrscheinlich nur suboptimal, aber sie tut es. Vielleicht kann man das ja irgendwie um Strings erweitern.
habe nur eine, die bestimmte Zeichen durch Unterstriche ersetzt. Ist wahrscheinlich nur suboptimal, aber sie tut es. Vielleicht kann man das ja irgendwie um Strings erweitern.
Code: Alles auswählen
void zeichen_entfernen(char *s)
{
char *ptr = s ;
while(*s != '\0')
{
if (*s != ' ' && *s != '/' && *s != '-' && *s != ':' && *s != ';' && *s != '<' && *s != '=' && *s != '>' &&
*s != '?' && *s != '!' && *s != '"' && *s != '#' && *s != '$' && *s != '%' && *s != '&' && *s != '\'' &&
*s != '(' && *s != ')' && *s != '*' && *s != ',' && *s != '.' && *s != '\5')
*ptr = *s;
else
*ptr = '_';
ptr++;
s++;
}
*ptr = '\0';
s=ptr;
}
MfG,
xyzzyx
Die Liste meiner portierten und meiner eigenen TAPs findet man hier
Download: Homepage
Installieren: TAPtoDate
Beschreibungen: Topfield TAP-Seite 
xyzzyx
Die Liste meiner portierten und meiner eigenen TAPs findet man hier




-
- Quelle des Wissens
- Beiträge: 1427
- Registriert: Mi 1. Feb 2006, 10:10
- Receivertyp: V U + Duo² 2xDualDVB-S2
- Receiverfirmware: OpenVIX Apollo
AW: str_replace
Man könnte sich ja auch was mit strstr und strcpy zusammen basteln.
- Gerti
- Nicht mehr bei Topfield-Europe
- Beiträge: 15740
- Registriert: Fr 9. Dez 2005, 00:16
- Receivertyp: Vu+ Uno 4k
- Wohnort: Hürth
- Kontaktdaten:
AW: str_replace
Hi!
@xyzzyx: So in der Art mache ich es im Moment auch...nur suche ich eigentlich etwas für ganze Ausrücke.
@srupptecht: Die Idee hatte ich auch schon, irgendwie klappte es aber nicht...
Muss ich morgen nochmal in Ruhe angehen...
Gruß,
Gerti
@xyzzyx: So in der Art mache ich es im Moment auch...nur suche ich eigentlich etwas für ganze Ausrücke.
@srupptecht: Die Idee hatte ich auch schon, irgendwie klappte es aber nicht...
Muss ich morgen nochmal in Ruhe angehen...
Gruß,
Gerti
- xyzzyx
- TAPPortierer
- Beiträge: 2099
- Registriert: Sa 6. Jun 2009, 18:35
- Receivertyp: SRP-2100 (TMS), **** Duo²
- Receiverfirmware: verschiedene
- Kontaktdaten:
AW: str_replace
Habe grad etwas ergoogelt ohne genauer zu schauen:
Die Speicherreservierung sollte man natürlich auf die TMS-Funktionen umbauen.
Code: Alles auswählen
#include <string.h>
#include <malloc.h>
/* replace will replace the first 'find' in 's' with 'replace'
* return: NULL if 'find' is not found
* the result string allocated with 'malloc' on success
*/
char* replace(const char* s, const char* find, const char* replace)
{
const char* p;
char* ret;
p = strstr(s, find);
if (p == NULL)
return NULL;
ret = malloc(strlen(s) + strlen(replace) + 1 - strlen(find));
if (ret == NULL)
return NULL;
if (p != s)
strncpy(ret, s, p-s);
strcpy(ret + (p-s), replace);
strcat(ret, p + strlen(find));
return ret;
}
int main()
{
char* s;
s = replace("Meine Oma backt Kuchen", "backt", "isst");
if (s != NULL) {
puts(s);
free(s);
}
s = replace("Meine Oma backt Kuchen", "Kuchen", "Kekse");
if (s != NULL) {
puts(s);
free(s);
}
s = replace("Meine Oma backt Kuchen", "Meine", "Deine");
if (s != NULL) {
puts(s);
free(s);
}
s = replace("Meine Oma backt Kuchen", "Findet", "nix");
if (s != NULL) {
puts("Ooops: should not happen !: ");
puts(s);
free(s);
}
}
MfG,
xyzzyx
Die Liste meiner portierten und meiner eigenen TAPs findet man hier
Download: Homepage
Installieren: TAPtoDate
Beschreibungen: Topfield TAP-Seite 
xyzzyx
Die Liste meiner portierten und meiner eigenen TAPs findet man hier



