Gibt es eine buildin-Funktion oder eine alternative einfache und schnelle Möglichkeit, ein C
-Zeichenarray zu entfernen, das, wenn es mit z. B. printf
verwendet wird, das ursprüngliche Zeichenarray wieder ergeben sollte.
Gibt es einen einfachen Weg in c, um einen String mit c Escape-Zeichen zu entkommen.
Ich habe einen Puffer, der eine Zeichenfolge mit Escape-Zeichen enthält. Und ich möchte in eine C-Datei aufnehmen. Dafür muss ich dem entkommen, damit es eingehalten werden kann. Ich muss nur wissen, ob es eine einfache Möglichkeit gibt, es zu tun, anstatt den Puffer nach \ n \ t usw. zu durchsuchen und dort c Escape-Zeichen zu erzeugen.
%Vor%Ich habe diese Funktion geschrieben. Es funktioniert gut.
%Vor% Nein, es gibt keine Standardfunktion zum Erstellen der Quellcodeversion der Zeichenfolge. Aber Sie könnten die Funktion iscntrl
verwenden, um eine zu schreiben, oder einfach das Schlüsselwort switch
verwenden.
Aber wenn Ihr Programm keine C-Quelldatei ausgibt, die den Compiler durchlaufen soll, müssen Sie nicht mit Strings arbeiten. printf
verarbeitet keine Zeichen-Escape-Sequenzen, nur Variablen-Einfügungen ( %d
, %s
, usw.)
Insbesondere erzeugen die folgenden die gleiche Ausgabe:
%Vor%und
%Vor%und
%Vor% Der zweite ist keine gute Idee, denn wenn str
%
enthält, würde Ihr Programm eine schlechte Ausgabe erzeugen und zum Absturz bringen.
EDIT: Zum Erstellen der Quellcodeversion gibt es eine Reihe von Ansätzen:
Einfachere, aber weniger lesbare Ausgabe:
%Vor%Besser lesbare Ergebnisse:
%Vor%Wenn Sie nicht möchten, dass die resultierende Zeichenfolge für Menschen lesbar ist und Ihr Kompilierungszeichensatz mit dem Ausführungszeichensatz übereinstimmt, dann ist der einfachste Weg, einen Codepunkt zu verwenden entkommt für alles:
%Vor%Du könntest das hier machen, um schönere Strings zu erzeugen, aber du hast nach etwas einfach gefragt ...
Wenn Sie eine Zeichenkette erzeugen, die als Teil einer C-Quelldatei verwendet werden soll, ist das Quotieren ziemlich komplex (Sie müssen sich mit Zeilenumbrüchen, mehreren anderen Steuerzeichen, Anführungszeichen, Backslashes usw. befassen). Es ist viel schneller und einfacher, die Tatsache zu verwenden, dass ein String einfach ein Array ganzzahliger Werte ist - und nicht
%Vor%generieren
%Vor%Das ist ziemlich einfach zu schreiben - etwas wie:
%Vor%Tags und Links c