24

インタビューで私は尋ねられました

printf()関数を使用して引用符を印刷します

圧倒されました。彼らのオフィスにもコンピューターがあり、試してみるように言われました。私はこのように試しました:

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

しかし、私が思ったように、それはコンパイルされません。コンパイラが最初"に取得するとき、それは文字列の終わりであると見なしますが、そうではありません。では、どうすればこれを達成できますか?

4

9 に答える 9

31

これを試して:

#include <stdio.h>

int main()
{
  printf("Printing quotation mark \" ");
}
于 2012-08-02T06:42:02.720 に答える
21

バックスラッシュがない場合、特殊文字には自然な特別な意味があります。バックスラッシュを使用すると、表示どおりに印刷されます。

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

ステートメント

printf("  \"  "); 

見積もりを印刷します。これらの特殊文字\a、\ b、\ f、\ n、\ r、\ t、および\ vの前に(スラッシュ)を付けて印刷することもできます。

于 2012-08-02T07:10:28.280 に答える
14

引用符をエスケープする必要があります:

printf("\"");
于 2012-08-02T06:41:58.093 に答える
9

Cプログラミング言語で\は、Cで特別な意味を持ついくつかの特殊文字を印刷するために使用されます。これらの特殊文字を以下に示します。

\\ - Backslash
\' - Single Quotation Mark
\" - Double Quatation Mark
\n - New line
\r - Carriage Return
\t - Horizontal Tab
\b - Backspace
\f - Formfeed
\a - Bell(beep) sound
于 2012-08-03T08:39:10.327 に答える
8

文字をエスケープするだけでなく、フォーマット%cを使用したり、引用符に文字リテラルを使用したりすることもできます。

printf("And I quote, %cThis is a quote.%c\n", '"', '"');
于 2012-08-02T07:04:37.737 に答える
5

文字のエスケープを使用する必要があります。これは、この鶏が先か卵が先かという問題の解決策です。文字列リテラルを終了する必要がある場合、「」をどのように書くのですか?そこで、C作成者は、次の文字の処理を変更する特殊文字を使用することにしました。

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

また、「\」を使用して「\ n」、「\ t」、「\ a」などの特殊記号を入力したり、「\」自体を入力したりすることもできます:「\\」など。

于 2012-08-02T06:46:51.153 に答える
3

これも機能します:

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

ただし、面接で使用する場合は、その機能を説明できるようにしてください。

編集:Eric Postpischilのコメントに続いて、ASCIIに依存しないバージョンを次に示します。

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

出力はそれほど良くなく、100%移植性はありませんが(一部の仮想エンコーディングスキームでは機能しなくなります)、EBCDICでは機能するはずです。

于 2012-08-02T08:47:07.210 に答える
0
#include<stdio.h>
int main(){
char ch='"';
printf("%c",ch);
return 0;
}

出力: "

于 2017-06-01T04:32:47.300 に答える
0

次のようなエスケープ文字を使用する必要があります。

printf("\"");
于 2018-03-06T12:47:18.437 に答える