2016-09-28 10 views
0

Immer wenn wir doppelte Anführungszeichen mit Backslash (Escape-Zeichen) drucken müssen, müssen wir es zweimal verwenden, während wir die Anführungszeichen öffnen und schließen oder nur einmal für beide.Doppelte Anführungszeichen in C Sprache

heißt wie folgt aus:

printf(" \" \" "); 

oder so:

printf(" \" " "); 

Welches ist richtig?

Ich brauche zu drucken (“Whatever!” He said “The Sparrows are flying again.”)

+0

ähnliche Frage http://stackoverflow.com/questions/9582781/c-sharp-two-double-quotes – code11

+0

Wenn die Klammern auch gedruckt werden sollen, verwenden Sie 'printf (" \ (Gotta \ "Was auch immer!" Er sagte: "Die Spatzen fliegen wieder.") –

+0

'printf (" \ "" ");' sollte einen Compilerfehler erzeugen. – chux

Antwort

1

Für jedes doppelte Anführungszeichen Sie wollen innerhalb der Zeichenfolge erscheinen, können Sie sowohl den umgekehrten Schrägstrich und das doppelte Anführungszeichen brauchen.

0

Sie entziehen sich jedem Zitat, das als Code ignoriert und als String verwendet werden soll. Also in Ihrem Fall wäre es wie folgt aussehen:

printThis(“\"Whatever!\” He said \“The Sparrows are flying again.\”"); 
+0

Oh, hab es! Danke Mann :) –

+0

' \ "' ist keine definierte Escape-Sequenz. OP verwendet intelligente Zitate. – chux

+0

Ich werde argumentieren dass das OP nie etwas über "intelligente Anführungszeichen" gesagt hat, selbst wenn das herauskam, wenn der Post gerendert wurde. MS Word macht bequeme Sachen wie das. C tut es jedoch nicht. Wenn das OP nach smarten Anführungszeichen gefragt hätte, wären Sie richtig – durbnpoisn

0

der Backslash ist, was Sie doppelte Anführungszeichen und andere spezielle charachters verwenden. Für jeden, sollten Sie einen einzelnen Backslash verwenden:

printf("\"") --> " 
printf("\'") --> ' 
printf("\\") --> \ 

und so weiter

so würde printf("\“Whatever!\” He said \“The Sparrows are flying again.\”") geben Sie Ihre gewünschte Ausgabe

EDIT: Wie Chux erwähnt, ist kein Standard-Doppel zitiert " und in diesem Fall gibt es keine Notwendigkeit für einen Backslash und printf("“Whatever!\” He said \“The Sparrows are flying again.”") würde ausreichen. ABER, würde den Backslash kein schlechtes Benehmen, obwohl die doppelten Anführungszeichen sind „intelligente Anführungszeichen“ verursacht

+0

'\" 'ist keine definierte Escapesequenz. OP verwendet intelligente Anführungszeichen. – chux

+0

Danke.habe das nicht gesehen – CIsForCookies

+0

Peinlich, um Code zu schreiben, der mit einer Warnung wie "unbekannte Escape-Sequenz: '\ 224'" kompiliert. Zu meinem Verdruss habe ich zu oft ähnliche Fehler gemacht. Übrigens würde das Verwenden des umgekehrten Schrägstrichs kein Fehlverhalten verursachen, obwohl die doppelten Anführungszeichen "intelligente Anführungszeichen" sind, die von der C-Spezifikation nicht unterstützt werden. – chux

0

Dies ist ein doppeltes Anführungszeichen, wie durch die C-Compiler erkannt: ". Keine der folgenden sind: “”. Sieh den Unterschied?

Daher sollten Sie den Code lesen, einfach:

printf("“Whatever!” He said “The Sparrows are flying again.”\n"); 

Wenn Sie nicht über die „smarte“ Anführungszeichen verwenden möchten, werden Sie regelmäßig zitiert und die Flucht ändern müssen alle von ihnen :

printf("\"Whatever!\" He said \"The Sparrows are flying again.\"\n"); 
Verwandte Themen