• ベストアンサー

C言語 ナル文字の表示

'\0'(ナル文字)を表示させたいのですがどうすればできますか? str[3] = となって何も表示されません。 str[3] = \0 とはならないんでしょうか? ---プログラム---------------------------- //ナル文字の表示 #include <stdio.h> int main(void){ char str[5] = "abc"; printf("str[0] = %c\n", str[0]); printf("str[1] = %c\n", str[1]); printf("str[2] = %c\n", str[2]); printf("str[3] = %c\n", str[3]); printf("str[4] = %c\n", str[4]); return 0; } ---------------------------- ----実行結果----------------- str[0] = a str[1] = b str[2] = c str[3] = str[4] = ------------------------------------

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

  • ベストアンサー
  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.2

>C言語では、バックスラッシュを端末で表示することが出来ないようです。 バックスラッシュはエスケープ文字になってますのでバックスラッシュを出力したいのでしたら putchar('\\'); のように、エスケープを意味する\の後に、\を書いてください。

purogu2017
質問者

お礼

回答有難うございます。

その他の回答 (3)

回答No.4

"\0"というのは、文字列リテラルとしてNULL文字を設定したい場合に使用するものであって、NULL文字を画面に表示すると"\0"と出てくるわけではありません。TAB文字も、文字列リテラルでは"\t"としますが、画面に"\t"と表示されるわけではありません。 また、printfはNULL文字がくると文字列の終端として処理するため、NULL文字を表示したりはしません。 NULL文字が設定されていることを確認するためには、printfにそのまま渡すのではなく、NULL文字だったら"\\0"を返すような関数を作成するなどの工夫が必要です。

purogu2017
質問者

お礼

回答有難うございます。

  • maiko0333
  • ベストアンサー率19% (839/4401)
回答No.3

ヌルですね。 では"a"はなぜ表示されるのでしょう? 記憶装置には"a"という文字で格納されているわけではありません。 "a"の文字コードが格納されていてそれを"a”という文字に変換して 表示するのです。ヌルは00が格納されていて文字は割り当てられていません。 あと、"abc"とした時、4文字目はNULLですが 5文字目は不定(設定されません)です。

purogu2017
質問者

お礼

回答有難うございます。

noname#232800
noname#232800
回答No.1

ならないと思います。

purogu2017
質問者

お礼

回答有難うございます。

purogu2017
質問者

補足

C言語では、バックスラッシュを端末で表示することが出来ないようです。 putchar('\'); ができませんでした。

関連するQ&A