Wie konvertiert man einen c-String in seine maskierte Version in c?

8

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.

%Vor%

Gibt es einen einfachen Weg in c, um einen String mit c Escape-Zeichen zu entkommen.

Aktualisieren

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%

Update 2

Ich habe diese Funktion geschrieben. Es funktioniert gut.

%Vor%     
affan 08.07.2010, 07:27
quelle

5 Antworten

5

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%     
Ben Voigt 08.07.2010, 07:32
quelle
1

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 ...

    
caf 08.07.2010 07:57
quelle
0

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%     
psmears 08.07.2010 08:09
quelle
-1

Sie müssen nur jedes Vorkommen von "%" durch "%%" ersetzen; "%" ist das ONLY Zeichen, das printf besonders behandelt. Die "\" Fluchten haben nichts mit printf zu tun; Sie sind Teil der Kompilierungsverarbeitung von Zeichenfolgenliteralen durch den C-Compiler.

    
R.. 08.07.2010 07:33
quelle
-2

Bitte überprüfen Sie das Papier auf printf

Sie müssen mehr über die Escape-Sequenzen wissen.

    
Praveen S 08.07.2010 07:35
quelle

Tags und Links