Ersetzen in C

Hallo,
c ist schon eine ganz schön komplizierte sprache. Ich habe eigentlich ein ganz simples problem, aber im internet nach c-programm-befehlen zu suchen ist wie eine nadel im heuhaufen…
also:
char a[] = „a-b“;
jetzt möchte ich den minus in ± umwandeln also so:
char b[] = „a±b“;
Es muss nicht b sein, kann auch in a bleiben, mir gehts halt um die vorgehensweise.
Könnte mir bitte jemand den kürzsten weg zeigen, wie man das macht? Ohne irgendwelche komplikationen. Eine programmierzeile reicht doch bestimmt aus.
Vielen Dank

Hallo,

c ist schon eine ganz schön komplizierte sprache. Ich habe
eigentlich ein ganz simples problem, aber im internet nach
c-programm-befehlen zu suchen ist wie eine nadel im
heuhaufen…

Hmmm. Selber bauen.

#include 
#include 

 int main() 
{
 char a[] = "a-b";
 char b[] = " "; // Achtung: b[] \*muss\* groß genug sein!
 
 replace\_in(a, b, "-", "+-");
 puts(a);
 puts(b);

 return 0;
}

also:
char a[] = „a-b“;
jetzt möchte ich den minus in ± umwandeln also so:
char b[] = „a±b“;
Es muss nicht b sein, kann auch in a bleiben, mir gehts halt
um die vorgehensweise.
Könnte mir bitte jemand den kürzsten weg zeigen, wie man das
macht? Ohne irgendwelche komplikationen. Eine programmierzeile
reicht doch bestimmt aus.

Ein Implementationsvorschlag:

char\* replace\_in(char\* source, char\* dest, char\* from, char \*to) {
 char \*p = strcpy(dest, source);
 while(p!=0 && (p=strstr(p, from))) {
 memmove(p+strlen(to), p+strlen(from), strlen(p)-strlen(from)+1);
 memmove(p, to, strlen(to));
 p += strlen(to);
 }
 return dest;
}

Güße

CMБ

Vielen herzlichen Dank, funktioniert einwandfrei.
Aber muss in C alles so supermegakompliziert sein?
wenn ich an php denke: str_replace() und fertig ist es ^^

Vielen herzlichen Dank, funktioniert einwandfrei.
Aber muss in C alles so supermegakompliziert sein?
wenn ich an php denke: str_replace() und fertig ist es ^^

Du meinst sowas hier:

#include // puts()
#include // memmove(), strlen() etc.
#include // malloc()

 int main() 
{
 char \*a = "a--b";
 **char \*b = str\_replace("--", "#####", a)**;
 
 puts(a);
 puts(b);

 return 0;
}

Implementationsvorschlag II:

 char\* str\_replace(char\* search, char\* replace, char \*subject) 
{
 int ldiff = 0; // [Kommentar einfuegen]
 char \*dest, \*p = subject; //
 while(p=strstr(p, search)) // 
 ldiff += strlen(replace)-strlen(search), ++p; 
 p = dest = strcpy(malloc(strlen(subject)+ldiff), subject);
 while(p=strstr(p, search)) { //
 memmove(p+strlen(replace), p+strlen(search), strlen(p)-strlen(search)+1);
 memmove(p, replace, strlen(replace)); //
 p += strlen(replace); //
 }
 return dest;
}

Grüße

CMБ

PS.: Der PHP-Kern ist in C geschrieben.

Hallo,

Aber muss in C alles so supermegakompliziert sein?
wenn ich an php denke: str_replace() und fertig ist es ^^

PHP ist für andere Dinge optimiert als C. Textverarbeitung gehört mit dazu, das ist nicht gerade die Stärke von C. (In Perl wäre es übrigens noch kürzer, s/–/#####/).

Trotzdem geht auch in C einiges, du kannst z.B. mit Regulären Ausdrücken arbeiten, siehe `man regcomp’. Ersetzungen kann es allerdings meines Wissens nach nicht.

Grüße,
Moritz

Hallo,

Aber muss in C alles so supermegakompliziert sein?
wenn ich an php denke: str_replace() und fertig ist es

C ist nicht supermegakompliziert. Im Gegenteil. Der Funktionsumfang von C ist bewusst klein, damit auch ein mäßig versierter Programmierer den gesamten Sprachumfang kennen kann. Spezialitäten wie z.B. ausgeklügelte String-Behandlung oder HTML Spezialitäten werden in besonders dafür entwickelte Bibliotheken ausgelagert.

Viele dieser Bibiotheken gehören zum Lieferumfang der Compiler, andere müssen gesondert beschafft oder selbst geschrieben werden.

PHP ist erheblich umfangreicher und daher schwerer zu erlernen. Auch dort müssen bestimmte Funktionen erst durch entsprechende Bibliotheken zur Verfügung gestellt werden. Darin unterscheiden sich moderne Sprachen nicht voneinander.

Gruß

Fritze

Hallo , wenn ich dein Problem richtig verstanden habe ,hier ist mein Vorschlag:
a - b ist nicht weiters als a + (-1*b) und umgekehrt
a + b ist a - (-1*b).
Viel Glück.
denis salem.

Hallo denis,

wenn ich dein Problem richtig verstanden habe ,hier
ist mein Vorschlag:

Hast du nicht.
Hier geht es nicht um Algebra, sondern um Zeichenketten.

MfG Peter(TOO)