C言語の’\n’の意味とは?なぜnと書いてるのにnが出力されない?

C言語のprintf関数などで\nという見慣れない表記を見たことがあると思います。

printf("Hello World!\n")のように、よくわからないけど参考書などに載っているサンプルコードに\nがあるからおまじないのように書いているという方も多いのではないでしょうか。

今回は、文字列出力の際になどに使われる\nについて解説します。

フォントによっては、\(バックスラッシュ)になっていることもあります

\nは特別な意味を持つエスケープシーケンス

printf関数などで用いられる\nはエスケープシーケンスと呼ばれるものです。

\(円マーク)から始まる構文はエスケープシーケンスであり、文字をそのまま出力するのではなく特別な制御を行うための文字となっています。

今回の\nは改行するという意味を持っており、\nが来たタイミングで改行されるようになっています。例えば下記のコードは途中で改行されて出力されます。

#include<stdio.h>

int main() {
	printf("Hello\nWorld!");
	return 0;
}
実行結果

そのため、文字列を出力したい際に途中で改行したい場合は\nを含めることで改行させることができます。

ちなみに、\nなどのエスケープシーケンスは変数に代入することも可能です。

char str[] = "Hello\nWorld!";
char c ='\n';

エスケープシーケンスは円マーク+1文字で1文字扱いであるためchar型変数に代入することも可能です

エスケープシーケンス一覧

エスケープシーケンスは\nだけではなく、ほかにもたくさん存在します。

エスケープ文字制御機能
\aビープ音を鳴らす
\b1文字戻る
\fページ送り
\n改行
\r同じ行の先頭に戻る
\t水平タブ
\v垂直タブ
\\\を表示
\??を表示
\’‘を表示
\”“を表示
\0NULL文字

\' "など普通に書くと構文エラーを引き起こす可能性がある文字はエスケープ文字として用意されており、\\と表示すれば\マークを、\'と表示すれば'を表示させられるようになっています。

printf("Hello \"JAPAN\" World");
実行結果

\マークや?などを文字列として扱いたい場合もエスケープシーケンスを積極的に活用するようにしましょう。

こちらの記事も読まれています

カテゴリー: