• ベストアンサー

\"%s\"の使いかたについて

C言語のプログラムで例えば、 #include<stdio.h> #include<string.h> main() { char word[]="ura"; int i=2; printf("文字列\"%s\"は%d個\n",word,i); } というプログラムがあった場合、printf("文字列"%s"は%d個\n",word,i);では、エラーが出ます。なぜ、\が必要なのですか?使いかたを教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

printfの文法は printf("表示したい文字列",変数1,変数2,...); です。 \" は「"という文字」 を表します。

kanako26
質問者

お礼

以前にも似たような記述を使ったことあるような気がします。もうすこし、勉強したいと思います。ありがとうございました。

その他の回答 (3)

  • naoya0302
  • ベストアンサー率39% (13/33)
回答No.4

\をprintf関数で表示させるときには、\\と記述しますね。 それと同じようなもので、 printf("文字列%s",word); この場合は、""の中の文字を表示し、%sなどは,のあとの変数を表示する。 printf("文字列"%s" ",word); これでは、文字列 のところまでで表示するように解釈されてしまいます。しかも、そのあとに意味不明な文字が続いているのでエラーが出ます。 printf("文字列:%s"文字列2,word); この文法でエラーが出るのと同じようなことです。

kanako26
質問者

お礼

あまりの%をprintfで表示するときも%%と記述するのと同じ感じのようですね。とても、わかりやすかったです。ありがとうございました。

  • kochory
  • ベストアンサー率45% (167/370)
回答No.3

printf("文字列"%s"は%d個\n",word,i); とすると、コンパイラは二番目の"で第1引数が終了したと判断してしまうのです。 で、本来は第1引数の後にコンマが来なくてはいけないのに、 %sというわけのわからない文字が来ているから、エラーを出すわけです。 「"」は「文字列の最初と最後を示す」という特別な役割があるので、 上のように、printf関数で「"」を画面に表示しようとしてそのまま 第1引数に入れると、困ったことになるわけです。 「\"」は、『文字列の区切りではない、文字としての「"」』を表します。 「"」をprintf関数で表示したい場合は、そのまま「"」を使うのではなく この「\"」を使わなくてはいけません。

kanako26
質問者

お礼

C言語では、このような記述が何種類かあるみたいですね。ありがとうございました。

  • php504
  • ベストアンサー率42% (926/2160)
回答No.2

""で挟まれた文字を文字列といいます。 文字列の中で"を使いたい場合に "abc"def"とすると"abc"で文字列が終わってしまいうまくいきません。 そのため""の中で"を使いたいときはその前に\を付ける決まりになっています。 "abc\"def"とすれば文字列「abc"def」のことになります。

kanako26
質問者

お礼

そんなに、深い意味はないんですね。レポートにどうやって書こうかととても困っていました。ありがとうございました。