zeichen in string escapen
-
hallo,
ich lese einen string aus einer datei ein, worin auch zeichen wie " oder % enhalten sind. diesen eingelesenen string moechte ich nun in einen anderen bestehenden einfügen, allerdings muessten eben diese zeichen dann ja escaped sein...
wie kann ich das bewerkstelligen?
-
lalalala schrieb:
diesen eingelesenen string moechte ich nun in einen anderen bestehenden einfügen, allerdings muessten eben diese zeichen dann ja escaped sein...
Nein, müssten sie nicht. Wie kommst du darauf?
-
wenn ich jetzt zwei strings habe und sie via sprintf zusammenfuegen moechte:
sprintf(derFertigeString, "Hallo, ich %s", derAndereString);
und derAndereString aus der datei wie folgt aussieht: "bin der zweite teil..."
(die anfuehrungszeichen sind teil des strings)
-
also willst du die anführungszeichen los werden? oder wie?
-
Es gibt Fälle da braucht man so was (zB für ein PDF):
Ein Zeiger auf Quelle und Ziel, den Quellzeiger durchlaufen lassen und die
Zeichen ggfls in das Ziel expandieren. Zum Decodieren der Quellzeichen einen
switch verwenden.
-
Für ein bloßes sprintf muss man jedenfalls nichts in derAndereString escapen.
-
vielleicht schreibe ich einfach mal worum es sich konkret handelt...
das ganze soll ein query string für eine mysql datenbank sein:sprintf(query, "INSERT INTO table(text) VALUES('%s')", textToInsert);
setze ich direkt in den string ein " ein, dann sagt mit der compiler gleich, dass das zeichen nicht escaped ist... escape ich es ist alles in ordnung und es geht...
nun habe ich nur das problem, dass das zeichen aus einem string kommt, den ich aus einer datei einlese und ihn nun escapen muss.
ich hoffe das bringt etwas licht in die sache...
-
Wenn der Compliter meckert ist es etwas anderes.
Ist den textToInsert der einzufügende Texte ? Der Compiler kennt den ja gar nicht.
-
Wenn du die Strings nur hintereinander schreiben möchtest würde ich strcat verwenden.
-
Wenn der Compliter meckert ist es etwas anderes.
ja das ist ja klar, das war ja auch nur ein beispiel um es zu verdeutlichen..
Ist den textToInsert der einzufügende Texte ? Der Compiler kennt den ja gar nicht.
Wenn du die Strings nur hintereinander schreiben möchtest würde ich strcat verwenden.
sprintf(query, "INSERT INTO table(text) VALUES('%s')", textToInsert);
also mein %s soll der string halt eingesetzt werden...
-
Dann tippe ich darauf, daß die Datenbank meckert, nicht der Compiler.
Schau mal im Handbuch nach, soweit ich weiß, muß man für SQL die Hochkommas
mappen.
-
Dann tippe ich darauf, daß die Datenbank meckert, nicht der Compiler.
ich hab ja auch nie gesagt, dass der compiler meckert
ich wollte lediglich den string escapen, damit die anfrage an die datenbank nicht fehlschlaegt...
*puh* also das was ich brauchte war mysql_real_escape_string