ein Zeichen einfügen in char*...?
-
Hallo, ich habe ein Problem und komme nicht weiter...
ich habe eine Zeichenkette vom Typ char*. Diese sieht etwa so aus:
char* msg="Error in module XXXXXXXXXX.";
Dieses "XXXXXXXXXX" soll später durch einen 10-Zeichenlangen Modulnamen ersetzt werden. Wie kann ich das machen? - Habe versucht über Index zuzugreifen, klappt aber nicht... da bekomme ich dann die Meldung zurück, dass Prozess "read" auf einem Speicher fehlschlug... das habe ich etwa so gemacht:
for(int i=0;i<10;++i) msg[i+16]=mname[i];
Gibt es noch weitere Möglichkeiten?
Hinweis: Ich weiß, dass man das mit Strings machen könnte, aber genau das will ich gerade meiden, denn das macht mein Programm dann gleich wieder riedengroß... so ist es zurzeit 20KB groß, mitString ist es dann gleich 420KB groß... also eher nicht so dafür ^^
-
gibt da glaub ich keine Funktion für..
ich würde einfach 2 Zeichenketten draus machen die du aneinander hängst..
-
Nunja, und wie hänge ich mehrere aneinander?
-
Hallo,
das Initialisieren eines Zeigers auf char (char*) mit einer Zeichenkette macht diese nur-lesbar, der Vorgang "write" (nicht "read"!) auf dem Speicher, auf den dieser Zeiger zeigt, sollte also fehlschlagen.
Um die Zeichenkette noch verändern zu können, sollte ein Arraychar msg[];
mit der Zeichenkette initialisiert werden
. Die Arraylänge wird dann automatisch vom Compiler ermittelt, verlängern lässt es sich dann nicht mehr, aber das ist ja in dem angeführten Quelltext auch gar nicht nötig. Hoffentlich sind diese Informationen zur Lösung dieses Problems hilfreich ;).
Mit freundlichen Grüßen
ISO-C-Programmierer
-
Nunja, das Problem ist folgendes: Ich habe viele Zeichenketten, wie etwa
eins zwei drei vier fünf sechs sieben acht neun
und dann noch
zehn elf zwölf dreizehn vierzehn fünfzehn sechzehn siebzehn achtzehn neunzehn
und so weiter, bis neunundneunzig. Ich möchte ein Programm schreiben, das z.B. Zahlen als Wörter ausgeben kann, etc. Nun kann man sich vorstellen, wie aufwendig es ist aus 5137463956438 fünfbillioneneinhundertsiebenunddreißigmilliardenvierhundertdreiundsechzigmillionenneunhundertsechsundfünfzigtausendvierhundertachtunddreißig zu machen...