2012-08-02 8 views
18

In einem Interview wurde ichWie kann ich ein Anführungszeichen in C drucken?

Drucken ein Anführungszeichen mit der printf() Funktion

fragte

ich überwältigt war. Sogar in ihrem Büro gab es einen Computer und sie sagten mir, ich solle es versuchen. Ich versuchte es so:

void main() 
{ 
    printf("Printing quotation mark " "); 
} 

aber wie ich vermutete, kompiliert es nicht. Wenn der Compiler die erste " erhält, denkt es, dass es das Ende der Zeichenfolge ist, was nicht der Fall ist. Wie kann ich das erreichen?

+12

Erinnern Sie sich an den kurzen Abschnitt zu Escape-Zeichen am Anfang dieses Buches ...? – chris

+0

Mögliches Duplikat von [Wie man Sonderzeichen explizit in C druckt?] (Http://stackoverflow.com/questions/29477345/how-to-print-special-characters-explicitly-in-c) –

Antwort

22

Try this:

#include <stdio.h> 

int main() 
{ 
    printf("Printing quotation mark \" "); 
} 
14

Sie haben die quotationmark zu entkommen:

printf("\""); 
4

Sie haben von Zeichen Flucht zu verwenden. Es ist eine Lösung dieses Huhn-und-Ei-Problems: Wie schreibe ich ein ", wenn ich es brauche, um ein Zeichenkettenliteral zu beenden? So entschieden sich die C-Erschaffer, ein spezielles Zeichen zu verwenden, das die Behandlung des nächsten Zeichens ändert:

printf("this is a \"quoted string\""); 

auch können Sie '\' zur Eingabe von Sonderzeichen wie "\ n", "\ t", "\ a", zur Eingabe von '\' selbst: "\\" und so weiter

7
.

Neben den Charakter zu entkommen, können Sie auch das Format %c, verwenden und die Zeichenliteral für ein Anführungszeichen verwenden.

printf("And I quote, %cThis is a quote.%c\n", '"', '"'); 
+0

Seine sehr gute Art zu Drucken der Zeichenkonstanten. – Angus

16

Ohne Backslash haben Sonderzeichen eine natürliche Sonderbedeutung. Mit einem Backslash werden sie so gedruckt, wie sie erscheinen.

\ - escape the next character 
" - start or end of string 
’ - start or end a character constant 
% - start a format specification 
\\ - print a backslash 
\" - print a double quote 
\’ - print a single quote 
%% - print a percent sign 

Die Aussage

printf(" \" "); 

Sie die Zitate gedruckt werden. Sie können diese Sonderzeichen \ a, \ b, \ f, \ n, \ r, \ t und \ v auch mit einem vorangestellten (Schrägstrich) drucken.

+0

'\%' ist falsch - es wird genauso behandelt wie '%'. '\ '' wird nicht benötigt - Sie können ein Zitat einfach in doppelte Anführungszeichen setzen. – ugoren

+1

Gute catch.Aber Sie können% in Anführungszeichen nicht drucken. Sie können jedoch ein Prozentzeichen mit %% drucken. Wie printf ("%%"); – Angus

+1

Sie können ''% '' auch frei verwenden, wenn es nicht im format string ist (zB 'printf (" drucke ein int mit% s \ n ","% d ")') – ugoren

1

Dieses funktioniert auch:

printf("%c\n", printf("Here, I print some double quotes: ")); 

Aber wenn Sie planen, es in einem Interview zu verwenden, stellen Sie sicher, können Sie erklären, was es tut.

EDIT: Eric Postpischil Kommentar Folgen, hier ist eine Version, die nicht auf ASCII angewiesen:

printf("%c\n", printf("%*s", '"', "Printing quotes: ")); 

Der Ausgang ist nicht so schön, und es ist noch nicht zu 100% portable (wird brechen Sie einige hypothetische Kodierungsschemata ab), aber es sollte mit EBCDIC funktionieren.

+0

Dies ist falsch. Der innere Druck wird zuerst ausgeführt. Dann wird der äußere Druck ausgeführt. Normalerweise werden verschachtelte Drucke verwendet, um die Gesamtzahl der in der Konsole gedruckten Zeichen zu finden. – Angus

+1

Das ist nicht falsch, nur ein bisschen verdreht, und es funktioniert sehr gut. Versuch es. Wie du sagst, wird der innere Druck zuerst ausgeführt, der äußere - was ist daran falsch? – ugoren

+0

Es wird der ASCII-Wert der Anzahl (Anzahl der gedruckten Zeichen) gedruckt, die vom inneren Druck ausgegeben wird. – Angus

7

In C-Programmiersprache \ wird verwendet, um einige Sonderzeichen zu drucken, die in C eine Sonderbedeutung haben.Diese Sonderzeichen sind im Folgenden aufgeführt

\\ - Backslash 
\' - Single Quotation Mark 
\" - Double Quatation Mark 
\n - New line 
\r - Carriage Return 
\t - Horizontal Tab 
\b - Backspace 
\f - Formfeed 
\a - Bell(beep) sound 
0
#include<stdio.h> 
int main(){ 
char ch='"'; 
printf("%c",ch); 
return 0; 
} 

Ausgang: "

-1

sollten Sie verwenden als: printf (" \ "");

Verwandte Themen