こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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] =
------------------------------------

投稿日時 - 2018-02-12 21:19:02

QNo.9428434

困ってます

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

>C言語では、バックスラッシュを端末で表示することが出来ないようです。

バックスラッシュはエスケープ文字になってますのでバックスラッシュを出力したいのでしたら
putchar('\\');
のように、エスケープを意味する\の後に、\を書いてください。

投稿日時 - 2018-02-13 02:17:56

お礼

回答有難うございます。

投稿日時 - 2018-02-13 23:45:41

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

"\0"というのは、文字列リテラルとしてNULL文字を設定したい場合に使用するものであって、NULL文字を画面に表示すると"\0"と出てくるわけではありません。TAB文字も、文字列リテラルでは"\t"としますが、画面に"\t"と表示されるわけではありません。

また、printfはNULL文字がくると文字列の終端として処理するため、NULL文字を表示したりはしません。

NULL文字が設定されていることを確認するためには、printfにそのまま渡すのではなく、NULL文字だったら"\\0"を返すような関数を作成するなどの工夫が必要です。

投稿日時 - 2018-02-13 09:53:23

お礼

回答有難うございます。

投稿日時 - 2018-02-13 23:47:15

ANo.3

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

あと、"abc"とした時、4文字目はNULLですが
5文字目は不定(設定されません)です。

投稿日時 - 2018-02-13 06:19:27

お礼

回答有難うございます。

投稿日時 - 2018-02-13 23:46:22

ANo.1

ならないと思います。

投稿日時 - 2018-02-12 21:27:03

補足

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

投稿日時 - 2018-02-12 22:46:56

お礼

回答有難うございます。

投稿日時 - 2018-02-12 22:35:48